10 Best Solo Classes in World of Warcraft (2023)

");$( "#content-area" ).prepend($addFlag);} }// This function handles animation for the new ToC, which currently includes:// 1. Fading the ToC in and out to prevent it from covering up the Info section in the footer ; function handleTocAnim( $tocBox, winHeight, docHeight, scrollTop ) { // We're going to check if we're near the bottom for an animation to hide the ToC so we don't // cover up the Info section in the footer var bottomBuffer = 384; //px var isNearBottom = scrollTop + winHeight > docHeight - bottomBuffer; // Fetch the value for the animFlag key var tocAnimating = $tocBox.data( "animFlag" ); // If ToC has been hidden by the fade anim, display will be 'none' when // finished animating var tocHidden = $tocBox.css( 'display' ) === 'none'; if( isNearBottom ) { // If we're near the bottom, and the ToC is not animating // and not hidden, then hide it if( !tocAnimating && !tocHidden ) { $tocBox.data( "animFlag", true ) $tocBox.fadeOut( 400, function() { $tocBox.data( "animFlag", false ); }); } } else { // If we're not near the bottom, and the ToC is not animating // and hidden, then unhide it if( !tocAnimating && tocHidden ) { $tocBox.data( "animFlag", true ); $tocBox.fadeIn( 400, function() { $tocBox.data( "animFlag", false ); }); } } }// Calculate the available height for the ToC Box ; function calcAvailableHeight( height ) {return height * 80.0 / 100.0;}// This function resizes specific page elements, depending on // window size and whether the ToC is present, to keep things // consistent.// The boolean debug arg enables verbose logging. ; function handleReflow( $, winOuterWidth, winInnerHeight, maxMobileWidth, debug ) {if( debug ) {console.log( "Checking if page layout should be reflowed..." );}// We want to reflow the layout whether or not we have the TOC, // with the hasTOC bool as a flag for if it exists on the pagevar tocFlag = $("#content-side");var hasToC = true; // FORCE HAS TOC, DEPLOYING SITEWIDE -supersoup// Check number of H2 elements. If <= 3, early returnvar numH2 = $("h2");if( numH2.length <= 3 ) {return;}// Cache varsvar $mainContainer = $("#main-content");var $logoContainer = $(".hgg-logo-space");var $navContainer = $(".hgg-menu-icon");var $contentArea = $("#content-area");// Null-check variablesvar anyNull = $mainContainer.length && $logoContainer.length && $navContainer.length && $contentArea.length;if( !($mainContainer.length) && debug ) {console.log( "$mainContainer null in reflowLayout..." );}if( !($logoContainer.length) && debug ) {console.log( "$logoContainer null in reflowLayout..." );}if( !($navContainer.length) && debug ) {console.log( "$navContainer null in reflowLayout...")}if( !($contentArea.length) && debug ) {console.log( "$contentArea null in reflowLayout..." );} if( debug ) {console.log( "anyNull: " + anyNull );console.log( "hasTOC: " + hasToC );}if( hasToC ) {// The previous process for initializing offsetTopForView didn't play well when// refreshing the page while partially down the post, switching to pulling the // header height for consistency -supersoupvar offsetTopForView = $("header").height() ; //pxif (offsetTopForView === undefined || offsetTopForView < 0) {offsetTopForView = 0;}var $toc = $( ".toc-box" );if( $toc.length > 0 ) {var availableHeight = calcAvailableHeight( winInnerHeight - offsetTopForView );if( debug ) {console.log( "window.innerHeight: " + winInnerHeight );console.log( "availableHeight: " + availableHeight );console.log( "toc[0].scrollHeight: " + $toc[0].scrollHeight );console.log( "toc.height(): " + $toc.height() );}if( $toc.outerHeight() > availableHeight ) {$toc.css( 'height', availableHeight );if( debug ) {console.log( "Setting ToC height to ", availableHeight );}} else {var newHeight = availableHeight < $toc[0].scrollHeight ? availableHeight : $toc[0].scrollHeight;$toc.css( 'height', newHeight );if( debug ) {console.log( "Setting ToC height to ", newHeight );}}/*// Update largest sizevar maxSize = $toc.data( "maxSize" );var outerHeight = $toc.outerHeight;if( maxSize === 0 || maxSize == undefined || maxSize == NaN || maxSize < cssHeight ) {$toc.data( "maxSize", $toc.outerHeight);console.log( "maxSize is now " + $toc.outerHeight );}*/if( $toc.height() < $toc[0].scrollHeight ) {$toc.css( 'overflow-x', 'hidden' );$toc.css( 'overflow-y', 'auto' );}else {$toc.css( 'overflow-x', 'hidden' );$toc.css( 'overflow-y', 'none' );}}if( winOuterWidth >= 1600 ) {$mainContainer.css( "margin-left", "15.95rem" );$logoContainer.css( "margin-left", "-6.1rem" );$navContainer.css( "margin-right", "-8.0rem" );} else if( winOuterWidth < 1600 && winOuterWidth > maxMobileWidth ) {$mainContainer.css( "margin-left", "14.8rem" );$logoContainer.css( "margin-left", "-3.8rem" );$navContainer.css( "margin-right", "-3.8rem" );} else if( winOuterWidth <= maxMobileWidth ) {// Clear applied CSS$mainContainer.css( "margin-left", "0" );$logoContainer.css( "margin-left", "0" );$navContainer.css( "margin-right", "0" );} else {if( debug ) {console.log( "Unhandled window width in reflowLayout() - With ToC" );}}} else {if( winOuterWidth >= 1600 ) {// Don't do anything yet on non-ToC pages} else if( winOuterWidth < 1600 && winOuterWidth > maxMobileWidth ) {$contentArea.css( "margin-left", "0");} else if( winOuterWidth <= maxMobileWidth ) {// Don't do anything yet on non-ToC pages} else {if( debug ) {console.log( "Unhandled window width in reflowLayout() - Without ToC" );}}} }// Handles reflowing content on the page depending on different variables; (function (window, $, undefined) {$.fn.reflowLayout = function() {// Mobile width for reflow, probably want to sync// with max mobile width for the ToCconst MAX_MOBILE_WIDTH = 1438;// Should we enable verbose logging for debugging?// SHOULD NOT BE TRUE IN PRODUCTION! -supersoupvar debug = false;handleReflow( $, window.outerWidth, window.innerHeight, MAX_MOBILE_WIDTH, debug );$(window).on( 'load', function () {handleReflow( $, window.outerWidth, window.innerHeight, MAX_MOBILE_WIDTH, debug );});// For reflowing when browser size changes$(window).on( 'resize', function () {handleReflow( $, window.outerWidth, window.innerHeight, MAX_MOBILE_WIDTH, debug );});/*$(window).on( 'scroll', function () {var $toc = $( ".toc-box" );if( $toc.length === 0 )return;console.log( "availableHeight: " + calcAvailableHeight( window.innerHeight ) );console.log( "toc[0].scrollHeight: " + $toc[0].scrollHeight );console.log( "toc.outerHeight(): " + $toc.outerHeight() );});*/};})(this, jQuery);// Transform guide content by visually organizing it into cards ; (function(window, $, undefined) { $.fn.cardify = function() { var $contentBody = $("#content-body"); if($contentBody === 0) { return; } var $contentBodyChildren = $contentBody.children(); var $h2s = $contentBody.children("h2"); console.log("H2 children of #content-body: " + $h2s.length); if($h2s.length === 0) { return; } for(var i = 0; i < $h2s.length; i++) { var $array = $contentBodyChildren.nextUntil("h2"); $array.each( function(index) { console.log("Element " + index + ": " + $(this).html()); }); // console.log("Card " + i + ":" + $contentBodyChildren.nextUntil("h2").html()); } } }(this, jQuery));// Create the top level TOC before the first heading // The boolean debug arg enables verbose logging. ; function createTopLevelTOC( $, debug ) {var $contentBody = $("#content-body");if( $contentBody === 0 ) {return;}var headingsToFind = ["h2", "h3"]; var $headings = $contentBody.find(headingsToFind.join(","));if( debug ) {console.log(`Headings found: ${$headings.length}`);}if( $headings.length === 0 ) {return;}var tocContainer = document.createElement("div");tocContainer.id="top_toc_container";tocContainer.classList.add("top_toc_container");var tocTitle = document.createElement("p");tocTitle.classList.add("top_toc_title");tocTitle.innerHTML = "Table of Contents";tocContainer.append(tocTitle);var tocList = document.createElement("ul");tocList.classList.add("top_toc_list");let h2Count = 1;let h3Count = 1;for( let i = 0; i < $headings.length; i++ ) {var item = document.createElement("li");var itemTagName = $headings[i].tagName;var tagIsH3 = itemTagName === "H3";if ( debug ) {console.log(`Item ${i} tagName: ${itemTagName}`);}var count = i+1;if( tagIsH3 ) {item.classList.add("top_toc_item_h3");count = h3Count;h3Count++;}else {item.classList.add("top_toc_item_h2");count = h2Count;h3Count = 1; // Reset h3 counth2Count++;}var innerText = `${tagIsH3 ? " - " : ""} ${$headings[i].innerText}`;item.innerHTML =`${innerText}`;tocList.append(item);}tocContainer.append(tocList);var $topHeading = $headings[0];$topHeading.before(tocContainer);if( debug ) {console.log("Successfully added top level ToC");}}// The main function for creating, populating, and managing the new ToC ; (function (window, $, undefined) { $.fn.createTOC = function (settings) {const MAX_MOBILE_WIDTH = 1438;// Before anything else, if this is a post in a Category that we // specifically want to force the ToC on, let's handle that// THIS IS NO LONGER NEEDED, as we're pushing ToC sitewide -supersoup// handleForceToC( $ );// We want to create the inline top level ToC if we're not generating // the sidebar tocif ( $(window).width() <= MAX_MOBILE_WIDTH ) {createTopLevelTOC( $, false );}// For now, we only want to add the new ToC to manually flagged posts.// The post is flagged with the presence of a

// contained within the content of the post. Originally, this div was being used// to wrap the ToC, but I (supersoup) am going to move the ToC out to a new div.// So, the first thing we want to do is test for this div, early return if not // found, or remove it and recreate a #content-side div elsewhere if it is found.var tocFlag = $("#content-side");var hasToC = !(tocFlag.length === 0);// If #content-side element is foundif( hasToC ) {// Get rid of tosFlag #content-side elementtocFlag.remove();}// Check number of H2 and H3 elements. If <= 3, early returnvar numH2 = $("h2");var numH3 = $("h3");if( numH2.length + numH3.length <= 3 ) {return;}// Proceed with .CreateTOC() var option = $.extend({ title: "hgg-toc", insert: "body", }, settings); var ACTIVE_CLASS = 'active'; var list = ["h2", "h3"]; var $headings = this.find(list.join(",")); var tocBox = document.createElement("ul"); var $tocBox = $(tocBox); tocBox.className = "toc-box"; var idList = []; $headings.map(function (i, head) { var nodeName = head.nodeName; var id = 'toc_' + i + '_' + nodeName; head.id = id; idList.push(id); var row = document.createElement("li"); row.className = 'toc-item toc-' + nodeName; var link = document.createElement('a'); link.innerText = head.innerText; link.className = 'toc-item-link'; link.href = '#' + id; row.appendChild(link); tocBox.appendChild(row); }); // Control the takeover of the highlighted elements var isTakeOverByClick = false; // Event delegate, add click ,Highlight the currently clicked item $tocBox.on("click", ".toc-item", function (ev) { // Set as true ,Represents the click event to take over the control of the highlighted element isTakeOverByClick = true; var $item = $(this); var $itemSiblings = $item.siblings(); $itemSiblings.removeClass(ACTIVE_CLASS); $item.addClass(ACTIVE_CLASS); });// Recreate #content-side element in new locationvar $tocDiv = $("

");$( "#content-area" ).prepend($tocDiv); // Want it to be the first subdiv of #content-areavar headBox = document.createElement("div");headBox.className = "toc-titler";headBox.innerHTML = option.title;var wrapBox = document.createElement("div");wrapBox.className = "wrap-toc";wrapBox.appendChild(headBox);wrapBox.appendChild(tocBox);// If on mobile, set sidebar hiddenif( $(window).width() <= MAX_MOBILE_WIDTH ) {wrapBox.style.display = 'none';} else {wrapBox.style.display = null;}var $insertBox = $(option.insert);var $helperBox = $("

");$helperBox.append(wrapBox);$insertBox.prepend($helperBox);// The style of the storage container boxvar CACHE_WIDTH = $insertBox.css('width');var CACHE_PADDING_TOP = $insertBox.css('paddingTop');var CACHE_PADDING_RIGHT = $insertBox.css('paddingRight');var CACHE_PADDING_BOTTOM = $insertBox.css('paddingBottom');var CACHE_PADDING_LEFT = $insertBox.css('paddingLeft');var CACHE_MARGIN_TOP = $insertBox.css('marginTop'); // var scrollTop = $('html,body').scrollTop(); // var offsetTop = $insertBox.offset().top; // var marginTop = parseInt($insertBox.css('marginTop')); // var offsetTopForView = offsetTop - scrollTop - marginTop; // For initialization on load$(window).on( 'load', function () {initTocAnimData( $insertBox );}); // Rolling ceiling $(window).scroll(function () {// The previous process for initializing offsetTopForView didn't play well when// refreshing the page while partially down the post, switching to pulling the // main-header height for consistency -supersoupvar offsetTopForView = $(".hgg-top-nav").height() ; //px// IE6/7/8: // For pages without doctype declaration, document.body.scrollTop can be used to get the height of scrollTop; // For pages with doctype declaration, document.documentElement.scrollTop can be used;// Safari: // Safari is special, it has its own function to get scrollTop: window.pageYOffset;// Firefox: // Relatively standard browsers such as Firefox can save more worry, just use document.documentElement.scrollTop;var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; // Scroll highlight // Only when the click event cancels the control of the highlighted element, the scroll event can have the control of the highlighted element !isTakeOverByClick && $.each(idList, function (index, id) { var $head = $('#' + id); var $item = $('[href="#' + id + '"]').parent(); var $itemSiblings = $item.siblings();var offsetBuffer = 64; // px, we want the class swap to trigger slightly before so we show an accurate active element// when zooming to a specific element var offsetTopHead = $head.offset().top - offsetBuffer; var isActived = $item.hasClass(ACTIVE_CLASS); if (scrollTop >= offsetTopHead) { $itemSiblings.removeClass(ACTIVE_CLASS); !isActived && $item.addClass(ACTIVE_CLASS); } else { $item.removeClass(ACTIVE_CLASS); } }); // Set to false, which means that the click event will cancel the control of the highlighted element isTakeOverByClick = false;// Handle animation for the ToChandleTocAnim( $insertBox, $(window).height(), $(document).height(), scrollTop );// Handle any changes to ToC CSS on scrollvar isFixed = $helperBox.css("position") === "fixed"; if (scrollTop >= offsetTopForView) {if (isFixed) return;$tocBox.css({overflow: 'auto',padding: 0,});$helperBox.css({position: 'fixed',top: CACHE_MARGIN_TOP,width: CACHE_WIDTH,paddingTop: CACHE_PADDING_TOP,paddingRight: CACHE_PADDING_RIGHT,paddingBottom: CACHE_PADDING_BOTTOM,paddingLeft: CACHE_PADDING_LEFT,backgroundColor: $tocBox.css('backgroundColor')});} else {if (!isFixed) return;$helperBox.css({position: 'static',padding: 0});$tocBox.css({overflow: 'auto',paddingTop: CACHE_PADDING_TOP,paddingRight: CACHE_PADDING_RIGHT,paddingBottom: CACHE_PADDING_BOTTOM,paddingLeft: CACHE_PADDING_LEFT,});} }); };}(this, jQuery));});

by Jeffrey Hsu | Last Updated: Jan 3, 2023

10 Best Solo Classes in World of Warcraft (1)

Image: Sharayah / HGG

We all know that MMOs ultimately come down to cooperation and teamwork to clear endgame challenges such as raids and high-end PvP. However, some days, we just want to go at it alone and see what challenges we can take on ourselves.

Today, we’re going to take a look at which classes and specializations have the easiest time going solo inWorld of Warcraft’slatest expansion,Shadowlands.

Ready to check out the WoW best solo classes? Let’s get started!

The Best Solo Classes forWoW: Shadowlands

As a disclaimer, this list is justourtake on the WoW best class for solo play — you might find yourself preferring another specialization for solo play. If you’re unsure where to begin,WoW‘s trial character feature is a great way to test out some of the specs before committing to a character. Above all else, don’t forget that the most important part is having fun with the character you play!

You’ll notice that most of the tank specializations are on the list, as they’re a very safe pick due to their survivability. You might not be killing everything as quickly, but you’re certainly going to come out alive. Since healer specializations tend to be reliant on other players, we didn’t include many of them on the list. For DPS, we focused on the specializations with either a follower to hold aggro or high-burst play to end the fight quickly and maximize your survival.

10. Guardian Druid (Tank)

Everyone has a plan until they fight a bear.

10 Best Solo Classes in World of Warcraft (2)

You’re a goddamn bear — what else is there to say? With powerful damage mitigation and plenty of passive regeneration, Guardian Druids can easily tackle most challenges solo while bleeding out their enemies with a steady series of DoTs. As you mangle your enemies and get mauled in return, you’ll generate rage, allowing you to keep up your defensives and outlast any threat with self-heals. All that fur, fat, and muscle isn’t just for show — it makes the Guardian Druid one of the WoW best solo classes around!

  • Strengths
  • Near 100% uptime on your main damage mitigator Ironfur
  • Other defensive abilities can neutralize enemy burst damage into manageable amounts
  • High amounts of self-regeneration from passives with even more emergency heals
  • Utility from other animal forms, such as stealth and instant mount speed.

9. Blood Death Knight (Tank)

Give your blood in service, for I can not.

10 Best Solo Classes in World of Warcraft (3)

As the undead juggernauts of Azeroth, Blood Death Knights have a different answer to each situation, all while striking back to restore the damage they’ve sustained. Blood Death Knights must manage their vast arsenal of defensives, drastically increase their parry, duplicate ability effects, and handle magical immunities to actively mitigate damage instead of relying on passive bonuses.

Tanking as a Blood Death Knight is a precarious juggling act, but the amount of enemy blood they spill will ensure they do not fall to death once more.

  • Strengths
  • Powerful self-sustain and damage rolled into one class
  • A defensive answer for any situation such as Anti-Magic Shell, Vampiric Blood, or Icebound Fortitude
  • One of the few specializations with any form of immunity (and they have three!)
  • Incredibly useful repositioning of enemies with Gorefiend’s Grasp

8. Discipline Priest (Healer)

Atonement is a… painful process for some.

10 Best Solo Classes in World of Warcraft (4)

Discipline Priests are the odd one out as the only healer spec on this list of WoW best solo classes. However, as their healing is directly tied to the amount of damage they put out, Discipline Priests are surprisingly effective killers while remaining topped off on HP.

Their playstyle revolves around shielding themselves with Power Word: Shield while chipping away their enemies with a steady stream of spells or popping cooldowns such as Schism and Mind Blasting away the target’s health bar. It’s a simple but effective strategy, as most enemies won’t be able to break through the shield before dying. That or the damage they manage to deal will be negated by the healing you receive from fighting. In this case, the best medicine is pain.

  • Strengths
  • Strong single target and solid AoE damage all heal you
  • Simple and effective rotation
  • Constant shields and self-sustain
  • Focused on negating damage before it can even happen

7. Windwalker Monk (DPS)

Strike once but a hundred times.

10 Best Solo Classes in World of Warcraft (5)

Let’s be frank, there’s a LOT of butt to kick inWoW, and few classes can do it as quickly and efficiently as Windwalker Monks. With a strong focus on AoE and rapid attacks, Windwalker Monks find themselves moving from one ability to the next as they manage their energy bar to generate chi for devastating blows. Using your strong mobility and counterattacks, you will constantly find yourself pummeling your enemies with a relentless slew of abilities.

  • Strengths
  • Strong abilities for both single-target and AoE situations
  • High burst combinations and counters to punish hard-hitting enemies
  • Multiple movement abilities such as Roll, Flying Serpent Kick, and Tiger’s Lust to keep up or away
  • Access to opportunities to heal up and get back in the fight

6. Frost Mage (DPS)

I put a rock in that snowball.

10 Best Solo Classes in World of Warcraft (6)

The masters of controlling the battlefield, Frost Mages find themselves with a tool for every situation. With the bulk of their spells slowing their foes’ movements, it becomes simple for frost mages to maintain a constant distance between themselves and the enemy.

Whenever you proc your passives Brain Freeze or Fingers of Frost, you’ll find yourself with a window to burst down your enemies with a flurry of instant-cast spells. Should an enemy actually reach you, you can easily snare them in place and distance yourself to begin the cycle of pain anew. Your enemies’ blood will turn cold in more ways than one when they see you.

  • Strengths
  • Amazing single target and AoE crowd control abilities such as Cone of Cold or Frost Nova
  • Plenty of opportunities for combos to deal massive burst damage
  • Can summon a water elemental to tank for them
  • Fantastic movement utility from Slow Fall, Blink, and Teleport spells. Also, infinite mage food!

5. Vengeance Demon Hunter (Tank)

Not even your death will sate my vengeance.

10 Best Solo Classes in World of Warcraft (7)

In pursuit of your enemies or strategic retreat, the Vengeance Demon Hunter is the most mobile of all the tanks. As one of the two specializations that heal based on the amount of damage they take, Vengeance Demon Hunters revolve around creating and absorbing Soul Fragments from their enemies to regenerate. No matter how much damage you take, you will not fall until you strike back and show your enemies what true vengeance is.

  • Strengths
  • Powerful and low cooldown abilities
  • Unparalleled mobility and kiting potential
  • Consistent healing during combat
  • Being on the brink of death is just a minor setback

4. Subtlety Rogue (DPS)

From the shadows we watch, we judge, we execute.

10 Best Solo Classes in World of Warcraft (8)

As the very definition of stealth, the Subtlety Rogue excels at isolating a target and bursting it down before other enemies can react. With Subtlety Rogues’ unique ability Shadow Dance, they can access their powerful stealth-based abilities throughout the fight, bypassing armor and eviscerating targets left and right before vanishing from the fight to do it all again.

  • Strengths
  • Able to choose when to pick a fight with stealth
  • Very strong burst damage windows with attacks bypassing a percentage of armor
  • Able to set up multiple crowd controls with Sap, Blind, and stuns
  • Vanish, Cloak of Shadows, and Sprint allow escape from a majority of encounters

3. Balance Druid (DPS)

Your life balances on a whim.

10 Best Solo Classes in World of Warcraft (9)

Unlike a typical eclipse, which is only dangerous if you stare at it, the Balance Druid’s eclipse will melt through your enemies with the might of mother nature. Balance Druids maintain a balance (shocking, I know!) between a solar and lunar state to empower their abilities. During this transition, enemies will find themselves either melting from single-target nukes or being bombarded in a massive area by a rain of stars. As one of the WoW best solo classes, enemies of balance, beware!

  • Strengths
  • One of the highest single-target burst windows in the game with Celestial Alignment
  • Excellent target swapping by pooling Starsurge
  • Incredible long-term sustained AoE damage for your farming needs
  • Utility from other animal forms, such as stealth and instant mount speed.

2. Beast Mastery Hunter (DPS)

We hunt as one!

10 Best Solo Classes in World of Warcraft (10)

As its name suggests, the Beast Mastery Hunter revolves around empowering and utilizing your pets to do the bulk of fighting for you. With the unique ability to have two hunter pets, Beast Mastery Hunters further distinguish themselves as being the only specialization that can do all of its damage while moving. Commanding their pets to maul the enemy while poisoning and bleeding their targets, Beast Mastery Hunters prove that the only thing you need is yourself and your loyal animal companions.

  • Strengths
  • Safest DPS specialization as pets will tank for you and can be actively healed
  • Good single target damage with excellent AoE cleave options
  • The ability to constantly move allows dodging while suffering no loss in damage
  • Pet utility options and survival abilities like Feign Death or Aspect of the Turtle make surviving easy

1. Protection Paladin (Tank)

The Light guides me onwards; not even death can impede me.

10 Best Solo Classes in World of Warcraft (11)

The best soloing class in WoW? It may just be the Protection Paladin.

With the Light at their beck and call, Protection Paladins charge forth into battle with no hesitation, calling upon their faith to guard and sustain them. Striking your foes with your abilities will generate holy power, allowing you to repeatedly empower your defenses with Shield of the Righteous or maintain your health with Word of Glory. Furthermore, your auras provide persistent buffs while Consecration provides a defensive refuge for you.

Additionally, as a Protection Paladin, you are unaffected by the AoE cap, which means you can hiteverythingwithin your abilities’ radius, turning you into the deadliest AoE tank in the game. As long as your faith never waivers, all your enemies shall fear the Light’s protection.

  • Strengths
  • Strongest AoE presence of all the tanks
  • Self-healing is insane at higher gear levels
  • Powerful auras for defensive and utility purposes
  • Immunities and get-out-of-jail abilities are useful no matter what situation

High Ground View

That’s it for our guide on theWoWbest solo classes ranked! It’s a dangerous afterlife out there in the Shadowlands, but fortune favors the prepared. Always keep yourself up to date on the latest news here at High Ground Gaming — see you in the next guide, Maw Walkers.

10 Best Solo Classes in World of Warcraft (12)

Related Reading

  • Best WoW Classes
  • Best WoW Classic Classes
  • WoW Expansions Ranked
  • Best MMO Games
  • Best Upcoming MMOs
" );})(jQuery);});
  1. 10 Best Solo Classes in World of Warcraft (13)

    JASONon February 6, 2021 at 3:17 pm

    Very informative article!


    • 10 Best Solo Classes in World of Warcraft (14)

      Jacobon September 10, 2021 at 5:35 pm

      Good stuff. The affliction warlock deserves a spot IMO. They require some keyboard magic but not any worse than some others that were listed. Also the voidwalker is just fine for tanking with your health funnel for bad situations


  2. 10 Best Solo Classes in World of Warcraft (15)

    bithalveron December 21, 2021 at 11:49 am

    Affliction warlock. Decent DPS with a private tank.


  3. 10 Best Solo Classes in World of Warcraft (16)

    Daveon February 12, 2022 at 3:59 pm

    Any warlock spec and Voidwalker. Blueberry for the win.


Submit a Comment

Top Articles
Latest Posts
Article information

Author: Fr. Dewey Fisher

Last Updated: 03/17/2023

Views: 6305

Rating: 4.1 / 5 (42 voted)

Reviews: 89% of readers found this page helpful

Author information

Name: Fr. Dewey Fisher

Birthday: 1993-03-26

Address: 917 Hyun Views, Rogahnmouth, KY 91013-8827

Phone: +5938540192553

Job: Administration Developer

Hobby: Embroidery, Horseback riding, Juggling, Urban exploration, Skiing, Cycling, Handball

Introduction: My name is Fr. Dewey Fisher, I am a powerful, open, faithful, combative, spotless, faithful, fair person who loves writing and wants to share my knowledge and understanding with you.