CINXE.COM
Dungeons & Dragons Hub
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Dungeons & Dragons Hub</title> <link rel="shortcut icon" href="https://pages.roll20.net/hubfs/favicon-1.ico"> <meta name="description" content="Browse our vast library of D&D content and free resources – for new players and advanced DMs alike."> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta property="og:description" content="Browse our vast library of D&D content and free resources – for new players and advanced DMs alike."> <meta property="og:title" content="Dungeons & Dragons Hub"> <meta name="twitter:description" content="Browse our vast library of D&D content and free resources – for new players and advanced DMs alike."> <meta name="twitter:title" content="Dungeons & Dragons Hub"> <style> a.cta_button{-moz-box-sizing:content-box !important;-webkit-box-sizing:content-box !important;box-sizing:content-box !important;vertical-align:middle}.hs-breadcrumb-menu{list-style-type:none;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px}.hs-breadcrumb-menu-item{float:left;padding:10px 0px 10px 10px}.hs-breadcrumb-menu-divider:before{content:'›';padding-left:10px}.hs-featured-image-link{border:0}.hs-featured-image{float:right;margin:0 0 20px 20px;max-width:50%}@media (max-width: 568px){.hs-featured-image{float:none;margin:0;width:100%;max-width:100%}}.hs-screen-reader-text{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px} </style> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/template_assets/1/57005054580/1742889880735/template__form-override.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/template_assets/1/57008746582/1742889881310/template__row-fluid-override.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/template_assets/1/57815800326/1742889882673/template_mess-global.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/template_assets/1/43344328352/1742889868124/template_main.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/template_assets/1/43344688755/1742889872536/template_theme-overrides.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/module_assets/1/61132845322/1742941171284/module_text-image-hero.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/module_assets/1/76200940550/1742941229789/module_styled-text-editor.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/module_assets/1/60818638472/1742941163459/module_full-width-youtube-video.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/module_assets/1/76188686006/1742941228686/module_two-column-gallery.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/module_assets/1/75979691042/1742941223569/module_video-three-up.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/module_assets/1/76182416757/1742941227484/module_article-library.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/module_assets/1/71012862235/1742941203075/module_marketplace-block.min.css"> <link rel="stylesheet" href="https://pages.roll20.net/hs-fs/hubfs/hub_generated/module_assets/1/71123768332/1742941207033/module_centered-headline-with-link-update-no-min.min.css"> <style> @font-face { font-family: "Nunito"; font-weight: 900; font-style: normal; font-display: swap; src: url("/_hcms/googlefonts/Nunito/900.woff2") format("woff2"), url("/_hcms/googlefonts/Nunito/900.woff") format("woff"); } @font-face { font-family: "Nunito"; font-weight: 400; font-style: normal; font-display: swap; src: url("/_hcms/googlefonts/Nunito/regular.woff2") format("woff2"), url("/_hcms/googlefonts/Nunito/regular.woff") format("woff"); } @font-face { font-family: "Nunito"; font-weight: 400; font-style: normal; font-display: swap; src: url("/_hcms/googlefonts/Nunito/regular.woff2") format("woff2"), url("/_hcms/googlefonts/Nunito/regular.woff") format("woff"); } @font-face { font-family: "Nunito"; font-weight: 700; font-style: normal; font-display: swap; src: url("/_hcms/googlefonts/Nunito/700.woff2") format("woff2"), url("/_hcms/googlefonts/Nunito/700.woff") format("woff"); } </style> <!-- Added by GoogleAnalytics4 integration --> <script> var _hsp = window._hsp = window._hsp || []; window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} var useGoogleConsentModeV2 = true; var waitForUpdateMillis = 1000; if (!window._hsGoogleConsentRunOnce) { window._hsGoogleConsentRunOnce = true; gtag('consent', 'default', { 'ad_storage': 'denied', 'analytics_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'wait_for_update': waitForUpdateMillis }); if (useGoogleConsentModeV2) { _hsp.push(['useGoogleConsentModeV2']) } else { _hsp.push(['addPrivacyConsentListener', function(consent){ var hasAnalyticsConsent = consent && (consent.allowed || (consent.categories && consent.categories.analytics)); var hasAdsConsent = consent && (consent.allowed || (consent.categories && consent.categories.advertisement)); gtag('consent', 'update', { 'ad_storage': hasAdsConsent ? 'granted' : 'denied', 'analytics_storage': hasAnalyticsConsent ? 'granted' : 'denied', 'ad_user_data': hasAdsConsent ? 'granted' : 'denied', 'ad_personalization': hasAdsConsent ? 'granted' : 'denied' }); }]); } } gtag('js', new Date()); gtag('set', 'developer_id.dZTQ1Zm', true); gtag('config', 'G-SZLSVQPSWG'); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-SZLSVQPSWG"></script> <!-- /Added by GoogleAnalytics4 integration --> <!-- Added by GoogleTagManager integration --> <script> var _hsp = window._hsp = window._hsp || []; window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} var useGoogleConsentModeV2 = true; var waitForUpdateMillis = 1000; var hsLoadGtm = function loadGtm() { if(window._hsGtmLoadOnce) { return; } if (useGoogleConsentModeV2) { gtag('set','developer_id.dZTQ1Zm',true); gtag('consent', 'default', { 'ad_storage': 'denied', 'analytics_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'wait_for_update': waitForUpdateMillis }); _hsp.push(['useGoogleConsentModeV2']) } (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5C9QHMR'); window._hsGtmLoadOnce = true; }; _hsp.push(['addPrivacyConsentListener', function(consent){ if(consent.allowed || (consent.categories && consent.categories.analytics)){ hsLoadGtm(); } }]); </script> <!-- /Added by GoogleTagManager integration --> <link rel="canonical" href="https://pages.roll20.net/dnd/"> <meta property="og:url" content="https://pages.roll20.net/dnd/"> <meta name="twitter:card" content="summary"> <meta http-equiv="content-language" content="en"> <script type="text/javascript" src="https://www.bugherd.com/sidebarv2.js?apikey=8krbenldnvaccdoe5cxmdg" async="true"></script> <meta name="generator" content="HubSpot"></head> <body> <!-- Added by GoogleTagManager integration --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5C9QHMR" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- /Added by GoogleTagManager integration --> <div class="body-wrapper hs-content-id-77175375746 hs-landing-page hs-page "> <div data-global-resource-path="Roll20 - Landing Pages/templates/partials/header.html"><header class="header dark-header"> <div class="header-module"> <div class="container content-wrapper"> <div class="header-flex"> <div class="header-logo"> <div id="hs_cos_wrapper_logo_module" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module widget-type-logo" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"> <span id="hs_cos_wrapper_logo_module_hs_logo_widget" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_logo" style="" data-hs-cos-general-type="widget" data-hs-cos-type="logo"><a href="https://roll20.net/" id="hs-link-logo_module_hs_logo_widget" style="border-width:0px;border:0px;"><img src="https://pages.roll20.net/hs-fs/hubfs/Roll20%20-%20Assets/roll20-logo.png?width=550&height=150&name=roll20-logo.png" class="hs-image-widget " height="150" style="height: auto;width:550px;border-width:0px;border:0px;" width="550" alt="roll20-logo" title="roll20-logo" srcset="https://pages.roll20.net/hs-fs/hubfs/Roll20%20-%20Assets/roll20-logo.png?width=275&height=75&name=roll20-logo.png 275w, https://pages.roll20.net/hs-fs/hubfs/Roll20%20-%20Assets/roll20-logo.png?width=550&height=150&name=roll20-logo.png 550w, https://pages.roll20.net/hs-fs/hubfs/Roll20%20-%20Assets/roll20-logo.png?width=825&height=225&name=roll20-logo.png 825w, https://pages.roll20.net/hs-fs/hubfs/Roll20%20-%20Assets/roll20-logo.png?width=1100&height=300&name=roll20-logo.png 1100w, https://pages.roll20.net/hs-fs/hubfs/Roll20%20-%20Assets/roll20-logo.png?width=1375&height=375&name=roll20-logo.png 1375w, https://pages.roll20.net/hs-fs/hubfs/Roll20%20-%20Assets/roll20-logo.png?width=1650&height=450&name=roll20-logo.png 1650w" sizes="(max-width: 550px) 100vw, 550px"></a></span> </div> </div> <div class="header-navigation"> <div id="hs_cos_wrapper_header_navigation_new" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module widget-type-menu" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"> <span id="hs_cos_wrapper_header_navigation_new_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_menu" style="" data-hs-cos-general-type="widget" data-hs-cos-type="menu"><div id="hs_menu_wrapper_header_navigation_new_" class="hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal" role="navigation" data-sitemap-name="default" data-menu-id="42583864650" aria-label="Navigation Menu"> <ul role="menu"> <li class="hs-menu-item hs-menu-depth-1" role="none"><a href="https://blog.roll20.net/" role="menuitem">Blog</a></li> <li class="hs-menu-item hs-menu-depth-1" role="none"><a href="https://marketplace.roll20.net/" role="menuitem" target="_blank" rel="noopener">Marketplace</a></li> <li class="hs-menu-item hs-menu-depth-1" role="none"><a href="https://app.roll20.net/forum/" role="menuitem">Community</a></li> <li class="hs-menu-item hs-menu-depth-1" role="none"><a href="https://app.roll20.net/account/create" role="menuitem">Create Free Account</a></li> </ul> </div></span></div> </div> </div> </div> </div> </header></div> <main id="main-content" class="body-container-wrapper"> <div id="hs_cos_wrapper_module_16552231386842" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><section class="split-column-with-video img-version" id=""> <div class="container" id="container"> <div class="inner-container"> <div class="header-wrapper"> <header> <h2 style="color: #ffffff !important"> Dungeons and Dragons </h2> <div class="copy" style="color: #ffffff !important"> <p> </p><p>New to the game? An accomplished DM? Enjoy our vast library of D&D content and free resources.</p> <p></p> </div> <a href="https://pages.roll20.net/lp/play-dnd-online-free?hsLang=en" class="btn"> Play Online Free </a> </header> </div> <div class="img-container"> <img src="https://pages.roll20.net/hubfs/dragon-background.jpeg"> </div> </div> </div> </section> <style> .dark-header .header-module { position: relative; } .dnd_area-row-0-padding { padding-top: 0 !important; padding-bottom: 110px !important; } .split-column-with-video:before { position: absolute; content: ''; display: block; top: 0; bottom: 0; width: calc((100vw - 1200px)/2 + (1200px *.333) + 20px); height: 100%; background: linear-gradient(222.68deg, #E10085 -16.54%, #702C91 110.96%); z-index: -1; } @media screen and (max-width: 1200px) { .split-column-with-video:before { width: calc(33.333% + 20px); } } @media screen and (max-width: 767px) { .split-column-with-video .header-wrapper{ background: linear-gradient(222.68deg, #E10085 -16.54%, #702C91 110.96%); } } </style></div> <div id="hs_cos_wrapper_module_16552231804353" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><section class="styled-text-editor"> <div class="background-image" style="background-image: url('https://pages.roll20.net/hubfs/MapBG-Purple_01.svg')"></div> <div class="container"> <div class="inner"> <h4><span style="font-size: 32px;">What is Dungeons & Dragons? </span></h4> <h4><img src="https://pages.roll20.net/hs-fs/hubfs/lost-mine-of-phandelver-smaller.jpg?width=287&name=lost-mine-of-phandelver-smaller.jpg" alt="lost-mine-of-phandelver-smaller" width="287" loading="lazy" style="width: 287px; float: right; margin: 0px 0px 1px 100px;" srcset="https://pages.roll20.net/hs-fs/hubfs/lost-mine-of-phandelver-smaller.jpg?width=144&name=lost-mine-of-phandelver-smaller.jpg 144w, https://pages.roll20.net/hs-fs/hubfs/lost-mine-of-phandelver-smaller.jpg?width=287&name=lost-mine-of-phandelver-smaller.jpg 287w, https://pages.roll20.net/hs-fs/hubfs/lost-mine-of-phandelver-smaller.jpg?width=431&name=lost-mine-of-phandelver-smaller.jpg 431w, https://pages.roll20.net/hs-fs/hubfs/lost-mine-of-phandelver-smaller.jpg?width=574&name=lost-mine-of-phandelver-smaller.jpg 574w, https://pages.roll20.net/hs-fs/hubfs/lost-mine-of-phandelver-smaller.jpg?width=718&name=lost-mine-of-phandelver-smaller.jpg 718w, https://pages.roll20.net/hs-fs/hubfs/lost-mine-of-phandelver-smaller.jpg?width=861&name=lost-mine-of-phandelver-smaller.jpg 861w" sizes="(max-width: 287px) 100vw, 287px">Dungeons and Dragons (D&D) is a fantasy role-playing game set in an imaginary world based loosely on medieval myth. While no two games are the same, players often take on the role of adventurers, fighting monsters and gaining treasure while completing quests.<br><br></h4> <p>The game is played with a group of friends, with one player taking on the role of the Dungeon Master, who controls monsters and other non-player characters. The imaginary world players inhabit runs on the collective brainpower of their party. This "theater of the mind" is one of the distinguishing features of role-playing games (like D&D) compared to board games, video games, and other media. Millions of players worldwide play D&D because it rewards group improvisation, offers a sense of progression, and establishes just enough structure to encourage excitement and unpredictability.</p> <p>Dungeons and Dragons has been around since the 1970s and has seen many different iterations. The most recent version, Dungeons and Dragons 5th edition, was released in 2014. There are 12 playable "<a href="/dnd/classes/?hsLang=en" rel="noopener" target="_blank">classes</a>" included in the Player's Handbook. If you'd like to learn more about the background of the game, the full history of D&D is a fascinating trip through (relatively recent) history.</p> <h4>Playing D&D on Roll20</h4> <p>Roll20 is the easiest way to play Dungeons and Dragons online. We offer a <a href="/lp/vtt-dnd?hsLang=en" rel="noopener" target="_blank">virtual tabletop</a> that runs entirely in your web browser – there's no software to download or servers to worry about. Since 2016, we've been an officially licensed partner with Wizards of the Coast, which has published Dungeons and Dragons since 1997. That means you can buy hundreds of official rulebooks, bundles, adventures, and more from our Marketplace. Roll20 supports over 1,200 different game systems, and D&D is one of the most popular, along with <a href="/pathfinder/?hsLang=en" rel="noopener" target="_blank">Pathfinder</a> and <a href="/call-of-cthulhu?hsLang=en" rel="noopener" target="_blank">Call of Cthulhu</a>.</p> </div> </div> </section></div> <div id="hs_cos_wrapper_module_16552232099194" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><section id="" class="full-width-video" style="background: linear-gradient(222.68deg, #E10085 -16.54%, #702C91 110.96%);"> <div class="container"> <h1 style="color: #FFFFFF !important"> Beginner Tutorial </h1> <p class="sub-headline" style="color: #FFFFFF !important"> Just getting started? Learn how the D&D system works, how to create a character, and how to become a GM on Roll20. </p> <div class="video-container"> <iframe width="560" height="315" src="https://www.youtube.com/embed/x_pBct-aS2o" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> </div></section></div> <div id="hs_cos_wrapper_module_16552232250855" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><section class="two-column-gallery"> <div class="container"> <div class="two-column-card-container"> <div style="background-image: url('https://pages.roll20.net/hubfs/med%20%282%29-3.png')" class="image right "></div> <div class="copy left "> <p class="headline">Discover our Compendium</p> <p class="main-copy"> The D&D 5th Edition compendium contains all the rules and information that you need to run a 5E fantasy game using the world's most popular Roleplaying game system. We've included lists of all the rules, Spells, Monsters, Classes, and items for you to peruse and quickly reference during your games. Dive in and start playing today! </p> <a href="https://app.roll20.net/compendium/dnd5e/Free%20Basic%20Rules%20%282024%29" class="btn btn-pink">2024 Free Basic Rules</a> </div> </div> <div class="two-column-card-container"> <div style="background-image: url('https://pages.roll20.net/hubfs/DnD-DynamicBundle-Landing.jpg')" class="image left "></div> <div class="copy right "> <p class="headline">Shop Adventures & More</p> <p class="main-copy"> The Roll20 marketplace has thousands of items for DMs and players that plug-and-play into live online games. As an officially-licensed partner with Wizards of the Coast, we offer fully-converted sourcebooks, adventures, and addons, many of which include tokens, drag-and-drop monsters, and tons more assets that make your game as seamless and exciting as possible. </p> <a href="https://marketplace.roll20.net/browse/publisher/242/wizards-of-the-coast" class="btn btn-pink">Shop</a> </div> </div> <div class="two-column-card-container"> <div style="background-image: url('https://pages.roll20.net/hubfs/dnd2024-sheet-full.webp')" class="image right "></div> <div class="copy left "> <p class="headline">Modernized Character Sheet</p> <p class="main-copy"> We just launched a complete redesign of the D&D Character Sheet and Builder to provide additional flexibility in how you play. This means not only supporting both 2014 and 2024 versions of official D&D 5E rules and homebrew in character sheets, but also offering tools that keep your games running smoothly! Plus, you can have both of the official 5E sheets within one campaign on the Roll20 Tabletop in games opted into Project Jumpgate, our the improved Tabletop experience. </p> <a href="https://app.roll20.net/characters/create/dnd2024byroll20" class="btn btn-pink">Try Now</a> </div> </div> </div> </section></div> <div id="hs_cos_wrapper_module_16552232528952" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><section class="video-three-up"> <div class="container"> <div id="three-up-container" class="inner"> <div class="flex-container"> <div class="video-card"> <div class="video-container"> <iframe width="560" height="315" src="https://www.youtube.com/embed/eDi0TZidQ4c" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> <p class="title">Watch IRL Gameplay</p> <p class="main-copy">Watch some familiar faces from Critical Role, Dimension20, and Dungeons and Daddies play a chaotic game in-person.</p> <a class="btn btn-pink" href="https://www.youtube.com/watch?v=eDi0TZidQ4c">Watch Video</a> </div> <div class="video-card"> <div class="video-container"> <iframe width="560" height="315" src="https://www.youtube.com/embed/DTuOa2Ba2_w" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> <p class="title">Beginner Overview</p> <p class="main-copy">Learn how dice rolls, character sheets, audio/video, and more work on Roll20.</p> <a class="btn btn-pink" href="https://www.youtube.com/watch?v=DTuOa2Ba2_w">Watch Video</a> </div> <div class="video-card"> <div class="video-container"> <iframe width="560" height="315" src="https://www.youtube.com/embed/FIOJnGmXui8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> <p class="title">D&D Support in 2024</p> <p class="main-copy">Celebrate 50 years of Dungeons & Dragons with our upcoming character sheet for 5E, D&D 2024, and beyond!</p> <a class="btn btn-pink" href="https://www.youtube.com/watch?v=Ob0g4Z0tnW8&list=PLTj75n3v9eTljjooh-nIr_LFAeHatTeI4&index=14&t=1s">Watch Video</a> </div> </div> </div> </div> </section> <style> .video-three-up { background: linear-gradient(0deg, #702C91 50%, #FFFFFF 50%); } </style></div> <div id="hs_cos_wrapper_module_16552232634703" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><section id="article-library" class="article-library"> <div class="container"> <h1 class="headline"> D&D Resources </h1> <p class="sub-headline"> </p> <div class="flex-container"> <div class="library-card"> <img class="category-logo" src="https://pages.roll20.net/hubfs/avatar.svg"> <p class="title">Classes & Characters</p> <ul> <a href="https://pages.roll20.net/dnd/character-creator-guide?hsLang=en"><li>D&D 5e Character Creator</li></a> <a href="https://pages.roll20.net/dnd-character-sheet?hsLang=en"><li>D&D Character Sheet</li></a> <a href="https://pages.roll20.net/dnd/5e-backgrounds?hsLang=en"><li>Backgrounds (D&D 5e)</li></a> <a href="https://pages.roll20.net/dnd/2024-backgrounds?hsLang=en"><li>Backgrounds (D&D 2024)</li></a> <a href="https://pages.roll20.net/dnd/classes/?hsLang=en"><li>The 12 Basic Classes</li></a> <a href="https://pages.roll20.net/dnd/multiclass-guide?hsLang=en"><li>Multiclassing</li></a> <a href="https://pages.roll20.net/dnd/druids?hsLang=en"><li>Doric the Druid</li></a> <a href="https://pages.roll20.net/dnd/paladins?hsLang=en"><li>Xenk the Paladin</li></a> <a href="https://pages.roll20.net/dnd/oathbreaker-paladin?hsLang=en"><li>Oathbreaker Paladin Guide</li></a> <a href="https://pages.roll20.net/dnd/bards?hsLang=en"><li>Edgin the Bard</li></a> <a href="https://pages.roll20.net/dnd/barbarians?hsLang=en"><li>Holga the Barbarian</li></a> <a href="https://pages.roll20.net/dnd/sorcerers?hsLang=en"><li>Simon the Sorcerer</li></a> <a href="https://pages.roll20.net/dnd/5e-feats-powerful?hsLang=en"><li>Most Powerful 5e Feats</li></a> <a href="https://pages.roll20.net/dnd/cantrips-guide?hsLang=en"><li>Cantrips in 5e</li></a> <a href="https://pages.roll20.net/dnd/5e-races-overview?hsLang=en"><li>Overview of Classic Races</li></a> <a href="https://pages.roll20.net/dnd/monk-class-2024-vs-2014?hsLang=en"><li>Monk 2024 vs 2014</li></a> <a href="https://pages.roll20.net/dnd/2024-class-changes?hsLang=en"><li>2024 Class Changes</li></a> <a href="https://pages.roll20.net/dnd/2024-new-subclasses?hsLang=en"><li>2024 New Subclasses</li></a> </ul> </div> <div class="library-card"> <img class="category-logo" src="https://pages.roll20.net/hubfs/book.svg"> <p class="title">Monsters & Locations</p> <ul> <a href="https://pages.roll20.net/dnd/neverwinter?hsLang=en"><li>Guide to Neverwinter</li></a> <a href="https://pages.roll20.net/dnd/icewind-dale?hsLang=en"><li>Guide to Icewind Dale</li></a> <a href="https://pages.roll20.net/dnd/underdark?hsLang=en"><li>Guide to the Underdark</li></a> <a href="https://pages.roll20.net/dnd/faerun?hsLang=en"><li>Guide to Faerun</li></a> <a href="https://pages.roll20.net/dnd/greyhawk-campaign-setting-dnd-2024?hsLang=en"><li>Guide to Greyhawk</li></a> <a href="https://pages.roll20.net/dnd/red-wizards-thay?hsLang=en"><li>The Red Wizards of Thay</li></a> <a href="https://pages.roll20.net/dnd/displacer-beast?hsLang=en"><li>Displacer Beast</li></a> <a href="https://pages.roll20.net/dnd/owlbear?hsLang=en"><li>Owlbear</li></a> <a href="https://pages.roll20.net/dnd/intellect-devourer?hsLang=en"><li>Intellect Devourer</li></a> <a href="https://pages.roll20.net/dnd/mimic?hsLang=en"><li>Mimic</li></a> <a href="https://pages.roll20.net/dnd/gelatinous-cube?hsLang=en"><li>Gelatinous Cube</li></a> <a href="https://pages.roll20.net/dnd/demogorgon?hsLang=en"><li>Demogorgon</li></a> <a href="https://pages.roll20.net/dnd/2024-blob-of-annihilation?hsLang=en"><li>Blob of Annihilation</li></a> <a href="https://pages.roll20.net/dnd/beholder?hsLang=en"><li>Beholder</li></a> <a href="https://pages.roll20.net/dnd/2025-monster-manual?hsLang=en"><li>2025 Monster Manual Guide</li></a> </ul> </div> <div class="library-card"> <img class="category-logo" src="https://pages.roll20.net/hubfs/document.svg"> <p class="title">Deep Dive Into D&D</p> <ul> <a href="https://marketplace.roll20.net/browse/bundle/21329/keys-from-the-golden-vault"><li>Keys from the Golden Vault</li></a> <a href="https://pages.roll20.net/dnd/tarokka-deck-guide?hsLang=en"><li>Learn the Tarokka Deck</li></a> <a href="https://pages.roll20.net/dnd/lost-mine-phandelver-new-dm?hsLang=en"><li>Lost Mine of Phandelver</li></a> <a href="https://pages.roll20.net/dnd/reviews/curse-of-strahd?hsLang=en"><li>Curse of Strahd Review</li></a> <a href="https://pages.roll20.net/dnd/reviews/ghosts-of-saltmarsh?hsLang=en"><li>Ghosts of Saltmarsh Review</li></a> <a href="https://pages.roll20.net/dnd/reviews/tomb-of-annihilation?hsLang=en"><li>Tomb of Annihilation Review</li></a> <a href="https://pages.roll20.net/dnd/trap-guide?hsLang=en"><li>How to Set Traps in D&D</li></a> <a href="https://pages.roll20.net/dnd/heist-guide?hsLang=en"><li>How to Run a D&D Heist</li></a> <a href="https://pages.roll20.net/dnd/elminster-mordenkainen?hsLang=en"><li>Guide to Elminster & Mordenkainen</li></a> <a href="https://blog.roll20.net/posts/8-dnd-lore-drops-in-baldurs-gate-3/"><li>D&D Lore in Baldur’s Gate 3</li></a> <a href="https://pages.roll20.net/dnd2024?hsLang=en"><li>D&D 2024: New Sheet and More</li></a> <a href="https://pages.roll20.net/dnd/feats-in-dnd-2024?hsLang=en"><li>D&D 2024: Feats</li></a> <a href="https://pages.roll20.net/dnd/crafting-tools-in-dnd-2024?hsLang=en"><li>D&D 2024: Crafting & Tools</li></a> <a href="https://pages.roll20.net/dnd/2024-dungeon-masters-guide?hsLang=en"><li>Inside the 2024 Dungeon Master's Guide</li></a> <a href="https://pages.roll20.net/dnd/bastions-2024-dmg?hsLang=en"><li>All About Bastions</li></a> </ul> </div> </div> </div> </section></div> <div id="hs_cos_wrapper_module_16552232831354" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><section class="marketplace-block" style="background-image: url('https://pages.roll20.net/hubfs/MapBG-Purple_01.svg');"> <div class="background-image" style="background-image: linear-gradient(0deg, rgba(0,0,0,0) 49%, rgba(255,255,255,1) 90%);"></div> <div class="container"> <h1 class="headline">Popular Sourcebooks & More</h1> <p class="main-copy"> Content you buy on Roll20 is yours forever. Our adventures, sourcebooks, and other content all plug-and-play seamlessly into our virtual tabletop (VTT). No more copying and pasting! </p> <div class="outter"> <div class="inner-marketplace-container"> </div> </div> <div class="control-container"> <ul> </ul> </div> <div class="button-container"> <a class="btn btn-pink" href="https://marketplace.roll20.net/browse/publisher/242/wizards-of-the-coast">View all D&D products</a> </div> </div> </section> <style> .marketplace-block::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: .85; background-color: white; } .marketplace-block .card .image-container { padding-top: 100%; } .marketplace-block { background-color: #ffffff; } .marketplace-block li:first-child { background-color: #e10085; } </style> <script> let isMobile = false; window.onload = () => { if (window.innerWidth >= 768) { cardsListIfDesktop(); } else { cardsListIfMobile(); } setArrows(); populateControlDots(); addDotEventListeners(); setCarouselListener(); } window.addEventListener("resize", () => { if (window.innerWidth < 768 && !isMobile) { cardsListIfMobile(); isMobile = true; } else if (window.innerWidth >= 768 && isMobile) { cardsListIfDesktop(); isMobile = false; } setArrows(); }); let cards = []; let newCard = {}; newCard.image = `https://9319166.fs1.hubspotusercontent-na1.net/hubfs/9319166/Strahd.png` newCard.headline = `Curse of Strahd`; newCard.copy = `This popular adventure for levels 1-10 is fully integrated into Roll20. It includes drag-and-drop statblocks and dozens of maps, tokens, and rollable tables. Plus, all original Castle Ravenloft maps are exclusive to Roll20.`; newCard.strikePrice = ``; newCard.currentPrice = `$24.99`; newCard.dealText = ``; newCard.subText = `List Price`; newCard.buttonText = `Buy now`; newCard.buttonLink = `https://marketplace.roll20.net/browse/bundle/15575/curse-of-strahd`; cards.push(newCard); newCard = {} newCard.image = `https://9319166.fs1.hubspotusercontent-na1.net/hubfs/9319166/monstermanuel-1.jpeg` newCard.headline = `DM Starter Bundle`; newCard.copy = `This DM Bundle unlocks all the info you need on races, classes, equipment, spells, lore, and so much more.`; newCard.strikePrice = `$115.44`; newCard.currentPrice = `$98.12`; newCard.dealText = ` Save 15%`; newCard.subText = `List Price`; newCard.buttonText = `Buy now`; newCard.buttonLink = `https://marketplace.roll20.net/browse/bundle/14718/dandd-dm-starter-bundle`; cards.push(newCard); newCard = {} newCard.image = `https://9319166.fs1.hubspotusercontent-na1.net/hubfs/9319166/playerbundle.jpeg` newCard.headline = `Player Bundle`; newCard.copy = `This Player Bundle is the perfect option for players who can't get enough character customization options.`; newCard.strikePrice = `$89.97`; newCard.currentPrice = `$76.47`; newCard.dealText = ` Save 15%`; newCard.subText = `List Price`; newCard.buttonText = `Buy now`; newCard.buttonLink = `https://marketplace.roll20.net/browse/bundle/14719/dandd-player-bundle`; cards.push(newCard); newCard = {} function createCardsMarkup(cardsArray) { let cardsMarkUp = []; cards.forEach(card => { let newCard = document.createElement('div'); newCard.classList.add('card'); let imageContainer = document.createElement('div'); imageContainer.classList.add('image-container'); imageContainer.style.cssText += "background-image: url('" + card.image + "');"; newCard.appendChild(imageContainer); let headline = document.createElement('h1'); headline.classList.add('card-headline'); headline.innerHTML = card.headline; newCard.appendChild(headline); let copy = document.createElement('p'); copy.classList.add('main-copy'); copy.innerHTML = card.copy; newCard.appendChild(copy); let subText = document.createElement('p'); subText.classList.add('sub-text'); subText.innerHTML = card.subText; newCard.appendChild(subText); let strikePrice = document.createElement('p'); strikePrice.classList.add('slash-price'); strikePrice.innerHTML = card.strikePrice; newCard.appendChild(strikePrice); let currentPrice = document.createElement('p'); currentPrice.classList.add('price'); let dealText = document.createElement('span'); dealText.innerHTML = card.dealText; currentPrice.innerHTML = card.currentPrice; currentPrice.appendChild(dealText); newCard.appendChild(currentPrice); let button = document.createElement('a'); button.classList.add("btn","btn-pink"); button.innerHTML = card.buttonText; button.href = card.buttonLink; newCard.appendChild(button); cardsMarkUp.push(newCard); }); return cardsMarkUp; } function createCardContainer() { let newCardContainer = document.createElement('div'); newCardContainer.classList.add('card-container'); return newCardContainer; } let container = document.querySelector('.inner-marketplace-container'); let currentCardContainer = createCardContainer(); let cardsMarkUp = createCardsMarkup(cards); function cardsListIfDesktop() { container.innerHTML = '<div class="forward-arrow"></div><div class="backward-arrow"></div>'; container.innderHTML += '' cardsMarkUp.forEach((card,index) => { if (index % 3 == 0 && index !== 0) { container.append(currentCardContainer); currentCardContainer = createCardContainer(); } currentCardContainer.append(card); if (index+1 == cardsMarkUp.length) { container.append(currentCardContainer); } }); } function cardsListIfMobile() { container.innerHTML = ''; container.innerHTML = '<div class="forward-arrow"></div><div class="backward-arrow"></div>'; cardsMarkUp.forEach(card => { container.appendChild(card); }); } function populateControlDots() { let numberOfDots; let isMobile = !(window.innerWidth > 768); let container = document.querySelector('.marketplace-block .control-container ul'); if (!isMobile) { numberOfDots = document.querySelectorAll('.card-container').length; } else { numberOfDots = document.querySelectorAll('.card').length; } for(let i = 0; i < numberOfDots; i++) { let dot = document.createElement('li'); dot.classList.add('control-dot-marketplace'); dot.setAttribute('id',`dot${i+1}`); container.appendChild(dot); } } function setArrows() { let forwardButton = document.querySelector('.forward-arrow'); let backwardButton = document.querySelector('.backward-arrow'); forwardButton.addEventListener("click", (event)=> { scrollForward(); }) backwardButton.addEventListener("click", (event)=> { scrollBackward(); }) } function scrollForward() { let cardContainer = document.querySelector('.inner-marketplace-container'); let offsetWidth = cardContainer.offsetWidth; cardContainer.scrollLeft += offsetWidth - 100; } function scrollBackward() { let cardContainer = document.querySelector('.inner-marketplace-container'); let offsetWidth = cardContainer.offsetWidth; cardContainer.scrollLeft -= offsetWidth - 100; } function addDotEventListeners() { let allDots = document.querySelectorAll('.control-dot-marketplace'); allDots.forEach(selectedDot => { selectedDot.addEventListener('click',() => {selectDot(selectedDot, allDots)}); }); } function selectDot(selectedDot, allDots) { allDots.forEach(dot=> { dot.style.backgroundColor = "#ECECEC"; }); selectedDot.style.backgroundColor = "#e10085"; let index = selectedDot.id.slice(3); scrollCarousel(index); } function scrollCarousel(indexToScrollTo) { carousel = getCarouselObject(); distanceToScroll = indexToScrollTo - carousel.currentIndex; carousel.innerCarousel.scrollLeft += distanceToScroll * carousel.width; } function setCarouselListener() { let allDots = document.querySelectorAll('.control-dot-marketplace'); var timer = null; let carousel = document.querySelector('.inner-marketplace-container'); carousel.addEventListener('scroll', () => { if (timer !== null) { clearTimeout(timer); } timer = setTimeout(function() { carousel = getCarouselObject(); selectDot(allDots[carousel.currentIndex-1],allDots); },50) }); } function getCarouselObject() { let carouselObject = {}; carouselObject.innerCarousel = document.querySelector('.inner-marketplace-container'); carouselObject.width = carouselObject.innerCarousel.clientWidth; carouselObject.currentIndex = (carouselObject.innerCarousel.scrollLeft / carouselObject.width) + 1; return carouselObject; } </script></div> <div id="hs_cos_wrapper_module_16552233012365" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><section id="" class="centered-headline-with-link" style="color: #ffffff !important;"> <div class="gradient" style="background: linear-gradient(103.35deg, #e10085 -1.37%, #702c91 95.86%);transform: matrix(1, 0, 0, -1, 0, 0);"> </div> <div class="container"> <header> <h2 class="headline"> <p>Ready to get started? Find a game</p> </h2> <p class="sub-headline"> Use our Looking for Group tool to find an experienced DM and a group of new friends to play with. </p> <a href="https://app.roll20.net/lfg/search/" class="btn btn-white"> Join a game </a> </header> </div> <div class="dice-layer parallax-cta"></div> </section></div> </main> <div data-global-resource-path="Roll20 - Landing Pages/templates/partials/footer-lp.html"><style> .bottom-banner { background-color: #fff; position: fixed; bottom: 40px; z-index: 9999; width: calc(100% - 30px); margin-left: 15px; box-shadow: 0px 0px 16px #888888; display: flex; align-items:center; justify-content: space-around; } .bottom-banner-css-version-v2{ border-left: 15px solid #ec008c; } .bottom-banner-css-version-v3{ border-left: 15px solid #35c8f5; } .bottom-banner-css-version-v2 .bottom-banner__button{ background-color: #35c8f5; } .bottom-banner-css-version-v3 .bottom-banner__button{ background-color: #ec008c; } .bottom-banner--hidden { display:none; } .bottom-banner__message { padding: 1em; float: left; font-size: 12px; line-height: 1.4; } .bottom-banner__dismiss-icon { float: right; padding:10px; color: #d1d1d1; cursor: pointer; align-self: flex-start; } .bottom-banner__dismiss-icon:hover { color: #333333; } .bottom-banner__button, .bottom-banner__button:hover, .bottom-banner__button:visited, .bottom-banner__button:active { float:right; font-size: 16px; line-height: 1.6; border-radius: 4px; padding: 7px 15px 7px 15px; color: #fff !important; transition: all .25s linear; text-decoration: none; } .bottom-banner__button:hover { color: #fff; } .cookie-modal--hidden { display: none; position: fixed; z-index: 10001; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; } .cookie-modal-content { background-color: #fefefe; margin: 20% auto; padding: 20px; border: 1px solid #888; width: 40%; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.6), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } .cookie-modal-content h3 { display: inline-block; } .cookie-modal-css-version-v3 { padding-top: 16px; } .cookie-modal_switch .switch{ display: inline-block; float: right; margin-top: 30px; width: 60px; } .switch { position: relative; display: inline-block; width: 60px; height: 26px; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #8492A6; -webkit-transition: .3s; transition: .3s; } .slider:after { content: "Off"; position: absolute; top: 50%; right: 11px; transform: translateY(-50%); color: #fff; font-family: helvetica; font-weight: bold; font-size: 13px; } .slider:before { position: absolute; content: ""; height: 20px; width: 20px; left: 3px; bottom: 3px; background-color: white; -webkit-transition: .3s; transition: .3s; } input:checked + .slider { background-color: #00853C; } input:disabled + .slider { cursor: no-drop; background-color: #C2C7D1; } input:disabled + .slider:before { background-color: #DFE2E7; } input:focus + .slider { box-shadow: 0 0 5px #2196F3; } input:checked + .slider:before { -webkit-transform: translateX(33px); -ms-transform: translateX(33px); transform: translateX(33px); } input:checked + .slider:after { content: "On"; right: auto; left: 11px; } /* Rounded sliders */ .slider.round { border-radius: 26px; width: 60px; } .slider.round:before { border-radius: 50%; } .close { float: right; font-size: 20px; font-weight: bold; line-height: 18px; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover { color: #000000; text-decoration: none; opacity: 0.4; filter: alpha(opacity=40); cursor: pointer; } </style> <!--googleoff: all--> <div id="gdpr-notification" class="bottom-banner bottom-banner--hidden bottom-banner-css-version-v3" style="z-index:1;"> <div class="bottom-banner__message"> Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences <a href="#" id="banner-link-preferences">here</a>. </div> <span class="bottom-banner__dismiss-icon" id="gdpr-notification-dismiss-button" aria-label="Close Cookie Toast">×</span> </div> <div id="cookie-modal" class="cookie-modal--hidden" style="z-index:1;"> <!-- Modal content --> <div class="cookie-modal-content cookie-modal-css-version-v3"> <span class="close" id="cookie-modal-dismiss" onclick="cookieModal.style.display = 'none';">×</span> <h3>Cookie Preferences</h3> <span class="cookie-modal_switch"> <label class="switch"> <input class="feature_toggle" id="cookie-modal-input" type="checkbox"> <span class="slider round"></span> </label></span> <hr> We use Cookies to help personalize and improve Roll20. For more information on our use of non-essential Cookies, visit our Privacy Policy <a href="https://roll20.zendesk.com/hc/en-us/articles/360037770793-Terms-of-Service-and-Privacy-Policy" target="_blank">here.</a> </div> </div> <!--googleon: all--> <script src="https://www.datadoghq-browser-agent.com/datadog-rum.js" type="text/javascript"> </script> <script type="text/javascript" nonce=""> // TODO: tutorialstartjs.haml /* (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-31040388-1', {'cookieDomain': 'auto'}); window['ga-disable-UA-31040388-1'] = true; */ var gdprCookie = getCookie("gdpr_accepts_cookies"); if (gdprCookie != undefined) { gdprCookie == "true" ? gdprCookie = true : gdprCookie = false; }; var gdprBanner = document.getElementById("gdpr-notification"); var gdprBannerDissmissButton = document.getElementById("gdpr-notification-dismiss-button"); var gdprLoggedIn = false; var gdprAccountAcceptsCookies = null; var cookieModal = document.getElementById("cookie-modal"); var cookieModalClose = document.getElementById("cookie-modal-dismiss"); var cookieModalSwitch = document.getElementById("cookie-modal-input"); $("#banner-link-preferences").on("click", function(){ $("#cookie-modal").show(); hideGDPRBanner(); }) function setGDPRCookie(value, expirationInDays) { var date = new Date(); date.setTime(date.getTime() + expirationInDays * 24 * 60 * 60 * 1000); //convert to milleseconds var expires = "expires="+ date.toUTCString(); document.cookie = "gdpr_accepts_cookies=" + value + ";" + expires + ";path=/"+ ";domain=.roll20.net"; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return undefined; } function checkGdprStatus() { if (gdprLoggedIn == true) { checkAccountGdprCookieSettings(); } else { checkPublicGdprCookieSettings(); } } function checkAccountGdprCookieSettings() { var cookieExists = getCookie("gdpr_accepts_cookies"); switch(cookieExists){ case "true": acceptCookies(); break case "false": denyCookies(); break case undefined: showGDPRBanner(); acceptCookies(); break } } function checkPublicGdprCookieSettings() { console.log('Not logged in - checking cookie GDPR status'); if (gdprCookie == undefined) { console.log("No GPDR Cookie Detected"); showGDPRBanner(); acceptCookies(); } else if (gdprCookie == true){ console.log("GDPR Cookie Detected"); acceptCookies(); } } function turnOnGoogleAnalytics() { window['ga-disable-UA-31040388-1'] = false; ga('send', 'pageview'); if(window.dataLayer) { dataLayer.push({'event': 'optedIn'}); } } var showGDPRBanner = function () { gdprBanner.classList.remove("bottom-banner--hidden"); } var hideGDPRBanner = function () { gdprBanner.classList.add("bottom-banner--hidden"); } var updateUserAccount = function(account_id, value) { var xhr = new XMLHttpRequest(); // need to get the below working for marketplace, compendium, landing (only works for app) xhr.open("PATCH", '/accounts/'+account_id, true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); var cookieValue = "account[gdpr_accepts_cookies]=" + value; xhr.send(cookieValue); } var acceptCookies = function () { setGDPRCookie(true, 365); turnOnGoogleAnalytics(); turnOnDataDogRUM(); // hideGDPRBanner(); document.getElementById("cookie-modal-input").checked = true; } var denyCookies = function () { setGDPRCookie(false, 365); } var toggleCookie = function () { var switchChecked = document.getElementById("cookie-modal-input").checked; setGDPRCookie(switchChecked, 365); } var showCookieModal = function (){ cookieModal.style.display = "block"; } var closeCookieModal = function (){ cookieModal.style.display = "none"; } if (gdprCookie == true || gdprAccountAcceptsCookies == true){ document.getElementById("cookie-modal-input").checked = true; } gdprBannerDissmissButton.addEventListener("click", hideGDPRBanner); cookieModalClose.addEventListener("click", closeCookieModal); cookieModalSwitch.addEventListener("click", toggleCookie); checkGdprStatus(); function turnOnDataDogRUM () { window.DD_RUM && window.DD_RUM.init({ applicationId: '95ddf222-5b92-4a62-803a-185cdd723c8b', clientToken: 'pub3fb1f7cf273c5d345be974e50be0dfda', site: 'datadoghq.com', service:'d20app', version: '1.47.1', sampleRate: 5, trackInteractions: true, }); } </script> <script type="text/javascript"> // Sets a browser cookie, but only allows true or false flags function setCookie(name, value, expirationInDays) { if (value == true || value == false) { let date = new Date(); date.setTime(date.getTime() + expirationInDays * 24 * 60 * 60 * 1000); //convert to milleseconds const expires = `expires=${date.toUTCString()}`; document.cookie = `${name}=${value};${expires};path=/;domain=.roll20.net`; } else { return undefined; } } // Gets a browser cookie value function getCookie(cname) { let name = cname + '='; let ca = document.cookie.split(';'); for(let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return undefined; } function checkCookieFlag(name) { let flag = getCookie(name); if (flag != undefined) { flag == 'true' ? flag = true : flag = false; } return flag; } </script> <style> .footer-follow { width:30% !important; } .footer-company { width:45% !important; } .footer-link { width:25% !important; } @media (max-width: 767px) { .footer-follow, .footer-company, .footer-link { width:100% !important; } .align-center { text-align:center !important; } } </style> <footer class="footer dark-footer"> <div class="footer-module"> <div class="content-wrapper"> <div class="footer-module-wrapper-main"> <div class="footer-flex"> <div class="footer-left footer-follow"> <div class="footer-upper" style="margin:auto auto;"> <p><span>Follow us</span></p> <div id="hs_cos_wrapper_module_16165883097922" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><ul> <li><a target="_blank" href="https://www.facebook.com/pages/Roll20/439774126041559"> <span id="hs_cos_wrapper_module_16165883097922_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon" style="" data-hs-cos-general-type="widget" data-hs-cos-type="icon"><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 264 512" aria-hidden="true"><g id="facebook-f1_layer"><path d="M76.7 512V283H0v-91h76.7v-71.7C76.7 42.4 124.3 0 193.8 0c33.3 0 61.9 2.5 70.2 3.6V85h-48.2c-37.8 0-45.1 18-45.1 44.3V192H256l-11.7 91h-73.6v229" /></g></svg></span> </a> </li> <li><a target="_blank" href="https://twitter.com/roll20app"> <span id="hs_cos_wrapper_module_16165883097922_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon" style="" data-hs-cos-general-type="widget" data-hs-cos-type="icon"><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 512 512" aria-hidden="true"><g id="twitter2_layer"><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z" /></g></svg></span> </a> </li> <li><a target="_blank" href="https://www.youtube.com/channel/UCHC1kWACzA7G6D2fqkqsRDg"> <span id="hs_cos_wrapper_module_16165883097922_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon" style="" data-hs-cos-general-type="widget" data-hs-cos-type="icon"><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 576 512" aria-hidden="true"><g id="youtube3_layer"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z" /></g></svg></span> </a> </li> <li><a target="_blank" href="http://twitch.tv/roll20app"> <span id="hs_cos_wrapper_module_16165883097922_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon" style="" data-hs-cos-general-type="widget" data-hs-cos-type="icon"><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 448 512" aria-hidden="true"><g id="twitch4_layer"><path d="M40.1 32L10 108.9v314.3h107V480h60.2l56.8-56.8h87l117-117V32H40.1zm357.8 254.1L331 353H224l-56.8 56.8V353H76.9V72.1h321v214zM331 149v116.9h-40.1V149H331zm-107 0v116.9h-40.1V149H224z" /></g></svg></span> </a> </li> <li><a target="_blank" href="https://www.instagram.com/roll20app/"> <span id="hs_cos_wrapper_module_16165883097922_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon" style="" data-hs-cos-general-type="widget" data-hs-cos-type="icon"><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 448 512" aria-hidden="true"><g id="instagram5_layer"><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z" /></g></svg></span> </a> </li> <li><a target="_blank" href="https://www.linkedin.com/company/roll20/"> <span id="hs_cos_wrapper_module_16165883097922_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon" style="" data-hs-cos-general-type="widget" data-hs-cos-type="icon"><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 448 512" aria-hidden="true"><g id="linkedin-in6_layer"><path d="M100.3 480H7.4V180.9h92.9V480zM53.8 140.1C24.1 140.1 0 115.5 0 85.8 0 56.1 24.1 32 53.8 32c29.7 0 53.8 24.1 53.8 53.8 0 29.7-24.1 54.3-53.8 54.3zM448 480h-92.7V334.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V480h-92.8V180.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V480z" /></g></svg></span> </a> </li> <!-- This icon is being hardcoded because as of 11-15-21 the tictok icon is not available on hubspot. If it is in the future this can be removed and added back correctly. --> <li><a target="_blank" href="https://www.tiktok.com/@roll20app"> <svg width="21" height="23" viewbox="0 0 21 23" xmlns="http://www.w3.org/2000/svg"> <path d="M8.36158 9.00722V12.6847C7.96898 12.6453 7.60256 12.5817 7.24007 12.5792C6.60516 12.5744 5.98101 12.7385 5.43527 13.0539C4.88953 13.3692 4.44303 13.8237 4.14415 14.368C3.84528 14.9123 3.70544 15.5258 3.73978 16.1418C3.77413 16.7579 3.98136 17.353 4.339 17.8628C4.69665 18.3726 5.19107 18.7775 5.76867 19.0337C6.34627 19.2899 6.98502 19.3876 7.61568 19.3162C8.24635 19.2448 8.84487 19.007 9.34637 18.6286C9.84787 18.2502 10.2332 17.7457 10.4606 17.1696C10.5883 16.8111 10.6516 16.4338 10.6478 16.0544C10.66 11.2876 10.6626 6.52124 10.6556 1.75527V0.99231H14.3198C14.63 4.61511 16.3155 6.48563 20.0046 6.58736V10.3666C18.0089 10.453 16.1925 9.93041 14.4075 8.93856C14.3866 9.17635 14.3591 9.35056 14.3604 9.52349C14.38 11.6204 14.3826 13.7198 14.4311 15.8128C14.4649 17.642 13.7665 19.4125 12.4832 20.7511C11.1998 22.0898 9.43167 22.8919 7.55153 22.9885C3.69364 23.1894 0.370998 20.3067 0.0307506 16.4614C-0.291176 12.8258 2.51717 9.4561 6.27691 9.01867C6.94955 8.93983 7.64575 9.00722 8.36158 9.00722Z" /> </svg> </a> </li> </ul></div> </div> </div> <div class="footer-left footer-company"> <p><span>© Roll20, LLC.</span></p> <p><span>Roll20® is a Registered Trademark of Roll20, LLC. All rights reserved.</span></p> <p><span>All rights reserved.</span></p> </div> <div class="footer-left footer-link"> <p><span><a href="https://help.roll20.net/hc/en-us/articles/360037254354-Acknowledgments">Acknowledgements</a></span></p> <p><span><a href="https://help.roll20.net/hc/en-us/articles/360037770793-Terms-of-Service-and-Privacy-Policy">Terms of Service & Privacy Policy</a></span></p> <p><span><a href="https://help.roll20.net/hc/en-us/articles/360037770793-Terms-of-Service-and-Privacy-Policy#Notification_of_Copyright_Infringement_.28DMCA_Policy.29">DMCA</a></span></p> <p><span><a onclick="cookieModal.style.display = 'block';">Cookies</a></span></p> <p><span><a href="https://roll20.net/help">Support</a></span></p> <p><span><a href="https://roll20.zendesk.com/hc/en-us/requests/new">Contact Us</a></span></p> </div> </div> </div> </div> </div> </footer></div> </div> <script src="/hs/hsstatic/jquery-libs/static-1.4/jquery/jquery-1.11.2.js"></script> <script>hsjQuery = window['jQuery'];</script> <!-- HubSpot performance collection script --> <script defer src="/hs/hsstatic/content-cwv-embed/static-1.1293/embed.js"></script> <script src="https://pages.roll20.net/hs-fs/hubfs/hub_generated/template_assets/1/43344657817/1742889871536/template_main.min.js"></script> <script> var hsVars = hsVars || {}; hsVars['language'] = 'en'; </script> <script src="/hs/hsstatic/cos-i18n/static-1.53/bundles/project.js"></script> <script src="/hs/hsstatic/keyboard-accessible-menu-flyouts/static-1.17/bundles/project.js"></script> <script src="https://pages.roll20.net/hs-fs/hubfs/hub_generated/module_assets/1/71123768332/1742941207033/module_centered-headline-with-link-update-no-min.min.js"></script> <!-- Start of HubSpot Analytics Code --> <script type="text/javascript"> var _hsq = _hsq || []; _hsq.push(["setContentType", "landing-page"]); _hsq.push(["setCanonicalUrl", "https:\/\/pages.roll20.net\/dnd\/"]); _hsq.push(["setPageId", "77175375746"]); _hsq.push(["setContentMetadata", { "contentPageId": 77175375746, "legacyPageId": "77175375746", "contentFolderId": null, "contentGroupId": null, "abTestId": null, "languageVariantId": 77175375746, "languageCode": "en", }]); </script> <script type="text/javascript" id="hs-script-loader" async defer src="/hs/scriptloader/9319166.js?businessUnitId=0"></script> <!-- End of HubSpot Analytics Code --> <script type="text/javascript"> var hsVars = { render_id: "0ab5b4a4-f78c-4d1f-8116-cf024c70289a", ticks: 1743515824827, page_id: 77175375746, content_group_id: 0, portal_id: 9319166, app_hs_base_url: "https://app.hubspot.com", cp_hs_base_url: "https://cp.hubspot.com", language: "en", analytics_page_type: "landing-page", scp_content_type: "", analytics_page_id: "77175375746", category_id: 1, folder_id: 0, is_hubspot_user: false } </script> <script defer src="/hs/hsstatic/HubspotToolsMenu/static-1.432/js/index.js"></script> </body></html>