Skip to content

Holy Grail Guide

What the Holy Grail challenge is, and how to track it with D2R Arcane Tracker. For installation, see the README.

The challenge

The Holy Grail is a long-term goal: find every unique and set item in the game yourself, with no trading and no duplicated items. Many players extend it to ethereal versions, runes or runewords.

The tracker includes:

Category Count Notes
Unique items 385 Weapons, armor, jewelry, charms and class-specific items
Set items 127 Grouped by set
Runes 33 El (#1) to Zod (#33), optional
Runewords 93 Optional. Runewords are made, not found

Common variants are the classic grail (normal uniques and sets), the ethereal grail (adds every item that can be ethereal), and the full grail (adds runes and runewords). Hardcore grails are tracked separately by many players.

Setup

The setup wizard opens on first launch. You can run it again from Settings → General → Setup Wizard. It asks for:

  1. Save folder (required): usually %USERPROFILE%\Saved Games\Diablo II Resurrected, the folder containing your .d2s files. Browse to it, or type or paste the path and click Use This Folder. The wizard checks the folder and only continues once it finds at least one character file. If you picked the parent folder (such as Saved Games) or a folder inside the save folder, it offers the right folder with Use Suggested Folder. If you haven't created a character yet, tick Continue anyway without character files.
  2. What to track: game mode, grail contents and game version. The defaults suit most players. See Choosing what to track.
  3. D2R installation folder (optional): only needed for item icons and terror zones. The wizard only suggests the Battle.net default, C:\Program Files (x86)\Diablo II Resurrected, if that folder exists.
  4. Preferences (optional): theme, notifications and widget.

Click Skip Optional Steps on the "What to track" step to go straight to the summary, which shows the save folder and how many character files were found. You can change all of these settings later in Settings. If you click Skip Setup while the app isn't monitoring a save folder (and the game mode isn't Manual Entry), the confirmation warns that automatic tracking won't work until you choose one in Settings.

Settings are saved as soon as you change them, so Finish only needs to mark the wizard as completed. If a change can't be saved, the app undoes it and shows an error with a Retry button. Inside the setup wizard, a setting that can't be saved is undone and an error appears in the step instead; if the wizard can't save when you click Finish or Skip Setup, it stays open and shows an error so you can try again.

Warning: switching the monitored save folder to a different folder deletes all characters and progress in the app. Back up first (Settings → Database → Backup).

In Settings → Save File Monitoring, Change Directory opens a folder picker and Restore Default uses the platform default folder. While monitoring is on, the status badge reads Active (N files), counting the save files listed under Detected Characters. If the chosen folder is the one already monitored, nothing changes and nothing is deleted. If it's a different folder and the app has characters or progress, a confirmation shows the current and new folder and how many characters and recorded grail finds will be deleted. Back up first is the highlighted action and receives focus when the dialog opens; once a backup has been made it becomes a secondary button; the destructive button says what it does (Delete progress and switch folder, or Delete progress and use default folder). Picking a different folder in the setup wizard shows the same confirmation.

Run Tracker sessions and runs are kept when you switch folders, but they are no longer linked to a character. Items in those runs that were found through the deleted progress are removed with it. If the app can't delete the old data or save the new folder, it keeps the old folder and all data.

Choosing what to track

Game mode (Settings → Tracking → Game Mode)

Mode Effect
Both Softcore & Hardcore Items from all characters count
Softcore Only Only softcore characters count
Hardcore Only Only hardcore characters count
Manual Entry Save files are not rescanned and you mark items yourself

Switching modes changes which finds count toward progress. No data is deleted. Manual Entry stays in effect after a restart or a save folder change; switching from Manual Entry back to another mode resumes save file monitoring.

Game version (Settings → Tracking → Game Version)

Choose Diablo II: Resurrected unless you're tracking the original Diablo II: Lord of Destruction. The setting affects save file parsing.

Grail contents (Settings → Tracking → Holy Grail Configuration)

Option Default Effect
Include Normal Items On Normal (non-ethereal) uniques and sets
Include Ethereal Items Off Ethereal versions of items that can be ethereal, tracked separately
Include Runes Off All 33 runes, each found once
Include Runewords Off Runewords you have made

Progress percentages update as soon as you change an option.

How item detection works

  1. The app watches the save folder for changes to character files (.d2s) and the shared stash (.d2i).
  2. When a file changes, it parses the file and reads every item: inventory, equipment, personal and shared stash, and Horadric Cube.
  3. Items that match grail entries you haven't found yet are recorded with the character, the time, and the current run if one is active.
  4. You get a notification for new finds.

Things to know:

  • D2R only writes save files when you leave a game, so new finds show up after you exit to the menu, not when you pick them up.
  • You don't need mule characters. Once an item is recorded you can sell, drop or use it.
  • Shared stash finds are attributed to the shared stash, not a character. Shared stashes in the newer v105+ .d2i format are listed as Modern Shared Stash Softcore or Modern Shared Stash Hardcore, the older format as Shared Stash Softcore or Shared Stash Hardcore.

Manual entry

In Manual Entry mode, or for finds the app can't see (another PC, older finds), open an item, select Mark as found, and choose the character, the found date and, if you track both versions of the item, the version. To undo a manual find, use the remove button in its row of the item's character progress table. Finds detected from save files can't be removed there.

Browsing your grail

The main screen lists every grail item with its found status. The search and filter bar lets you:

  • Search by item name, base item ("Shako", "Diadem"), set name ("Tal Rasha") or, for runewords, rune ("Ber"). Every word you type must match, so "tal lidless" narrows the results further. Turn on Fuzzy Search in Filters to also find items when you abbreviate words ("hrlqn") or make a small typo ("windfroce").
  • Filter by status (all, found, missing) and by type with the colored Unique, Set, Rune and Runeword toggles. Rune and runeword toggles only appear when you track them. Each type toggle also shows your progress for that type, such as "Unique 142/385". It counts the same item versions as the overall progress bar (with ethereal tracking on, ethereal versions count too) and does not change when you filter.
  • Open Filters to narrow by category (weapons, armor, jewelry, charms) and sub-category, such as helms, body armor or class-specific items, grouped by category.
  • Open View to switch between grid and list views, sort and group. The button's icon shows the current view.
    • Sort by name, category, type or found date, ascending or descending. Types sort in the game's quality order (unique, set, rune, runeword) and categories in the order weapons, armor, jewelry, charms, runes, runewords. Items with the same value, such as all missing items when sorting by found date, are listed alphabetically.
    • Group by category, type or ethereal status (available when ethereal tracking is on). Groups always appear in a fixed order, whatever the sort field or direction (the sort only orders the items inside each group): category groups as weapons, armor, jewelry, charms, runes, runewords; type groups as unique, set, rune, runeword; ethereal groups from both versions found down to not tracked. Ethereal groups read, for example, "Both versions found", "Missing both versions" or "No ethereal version: found". Each group has a header with its found count and a small progress bar.
  • In the grid, items are shown as compact tiles of equal height in rows that read left to right and wrap to the next row, with as many columns as fit the window width.

Below the bar, removable chips show the search text, fuzzy search and the categories and sub-categories picked in Filters; the status and type toggles already show their own state. Clear all resets the search, filters, fuzzy search and sorting. The count next to them shows how many items match your filters out of all tracked items.

Keyboard shortcuts:

Key Action
/ or Ctrl+F (Cmd+F on macOS) Focus the search field
Esc (in the search field) Clear the search; press again to leave the field

The grail works like a collection wall. Found items light up: as in the game, the name is colored by quality (gold for uniques, green for sets, orange for runes and purple for runewords), in a heavier weight, with a thin frame in a softer shade of the same color. Missing items stay dim and neutral, with a gray name, a plain frame and grayed-out artwork. Under the name, one line shows the set of set items and the base item of other items (for example "Shako"); long text is cut off. Hover over the name to see the full name, base item, set, category and who found the item and when. The list view shows the base item, the set and the characters who found the item in each row.

When you track ethereal items, cards for items that can be ethereal show one pill per tracked version, Normal and Ethereal (or Ethereal Only); grid tiles shorten Ethereal to Eth. A found version has a solid pill with a check mark; a missing version has a dashed pill with an empty circle, so you can see which version you still need. Items found in the last 7 days while the tracker was running have a New badge. Screen readers announce the same information: the item name, whether it is found (or the status of each version, such as "Normal found, Ethereal missing") and whether it was found recently.

Click an item to open its details, laid out like the in-game item tooltip. At the top are the rune images of a runeword (or the item icon, when item icons are on), the name in its quality color, the base item (for example "Shako") and whether you found it. For items that can be ethereal, the normal and the ethereal version each show their own status. Below that are the item's type, category, treasure class and ethereal type, its set or required runes where they apply, and a link to diablo2.io or d2runewizard. The character progress table shows, for each character, when they found the item and whether the find was detected automatically or added manually.

Bookmarks

The item dialog also has a Bookmark button. Once the item is bookmarked, the button reads Remove bookmark and its icon is filled. A bookmark only records the item as one you care about in the app's own database. It never reads or changes a save file, and it doesn't count as finding the item. Bookmarks are not shown in the Inventory Browser.

Item icons

To show the game's own item icons:

  1. Extract the game files.
  2. Go to Settings → Item Icon Management, click Convert Sprite Files to PNG, and wait for it to finish.
  3. Turn on Show Item Icons.

Conversion only reads game files and is safe to run again. The PNGs are stored in the app's data folder.

Other features

Statistics

The Statistics page shows overall and per-category progress, a comparison between characters, and run analytics from the Run Tracker. Four tiles sum up the grail: Total Progress, Last Find While Tracking (how long ago the tracker last saw you find a tracked version of an item, and which item; it reads "None yet" while every find came from the startup scan), Closest Set (the unfinished set with the largest share of its items found) and Runes Missing (how many runes you still need, and the highest of them). The set and rune tiles are hidden when no set or rune is part of your grail, for example when you track only ethereal items, since sets and runes can't be ethereal. The Last Find in Recent Activity is different: it includes finds from the startup scan and of versions you don't track. Two charts show your progress over time: Grail Progress Over Time counts each tracked item version on the day it was first found, and Finds per Week shows the finds of each of the last 12 weeks, the latest week ending today. Items found when the app scans your save files at startup count as found, but the tracker didn't see them being found, so they don't count as recent finds, towards the weekly finds or as the find shown in the Last Find While Tracking tile. The progress chart treats the startup-scan items on its first day as a baseline: these are the items of the first scan that found items, so a scan that found nothing leaves no trace and a later scan can become the baseline. A dashed line marks them, the value axis starts just below that number instead of at zero, and a note under the chart says how many there were and on which day. Items from startup scans on later days (found while the app was closed) count on the day of that scan. Recent finds are the finds of the last 7 days; they're shown next to each category and character. Recent finds count every find made while the tracker was running, whether or not that version of the item is tracked. Shared stashes are not characters, so they are left out of the character comparison. Hover over a chart, or focus it and use the arrow keys, to see the values of a day or week. The statistics are refreshed when the date changes, so a window left open overnight stays current. The selected tab (Grail Statistics or Run Statistics) is kept in the page address, so going back to the page with the browser's back button restores it.

Inventory Browser

The Inventory Browser lists the items in every character and shared stash, and can move items between them or vault them. See the Inventory Browser guide, including its safety rules (backups, and writes refused while the game is running on Windows).

Runeword Calculator

The Runeword Calculator reads the runes in your save files and shows which runewords you can make:

  • Choose what to show: Craftable now (the default) shows runewords you can make with the runes you have. Missing ≤ 1 also shows runewords that need one more rune, and All shows every runeword. If nothing matches the current view, the page offers the next broader view that has results.
  • Results are sorted with craftable runewords first, then by the fewest missing runes, then by name.
  • Search by name in the toolbar above the results, or select runes in the sidebar to show only runewords that use all of the selected runes. Clear selection removes them. The sidebar also shows how many of each rune you have.
  • Refresh runes rescans your save files after you pick up or use runes in the game. In Manual Entry mode save files are not rescanned, so the counts stay as they were at the last scan.
  • Each card shows how many of its runes you have (for example, "3/4 runes", green when you have them all) and marks missing runes with a cross, including when a runeword needs the same rune more than once. The card footer shows how many sockets the runeword needs (one per rune) and links to the runeword's details.
  • The sidebar stays in place while you scroll through the runewords. In short windows (roughly under 830px tall), the rune list scrolls inside the sidebar instead.

The calculator works whether or not you track runewords in your grail.

Terror zones

You can limit the terror zone rotation to zones you choose. See the Terror Zone Configuration guide.

Notifications

Settings → Notification Settings:

  • Sound Notifications, with a volume control.
  • In-App Notifications: cards inside the app. Recent finds are also listed under the bell icon.
  • Native Notifications: OS notifications, which also appear while the app is minimized.

If a background task fails, for example a save file can't be read or a database write fails, an error message appears in the bottom-left corner. It stays open until you close it, and a repeated failure of the same kind updates that one message with the most recent file name and details instead of adding new ones. Errors you can fix in the settings have an Open Settings button. The others have Copy details, which copies the technical details for a bug report.

Widget

Settings → Widget Settings enables an always-on-top overlay that you can drag, resize and set to any opacity. It snaps to screen edges. Display modes:

  • Overall: total progress.
  • Split: normal and ethereal progress. Requires ethereal tracking.
  • All: all three gauges. Requires ethereal tracking.
  • Run Only: a large timer for the current run with its number and whether it's running, paused or idle, the session's fastest and average run, and optionally a list of items found in this session's runs. Turning the item list on or off switches the widget to the matching default height.

The progress gauges show the same numbers as the progress summary on the Holy Grail page. Only the versions you track count towards the totals: with Include Ethereal Items off there is no ethereal total, and with Include Normal Items off there is no normal total. The normal and ethereal split in the progress summary is only shown while both versions are tracked.

The widget remembers its size separately for each display mode. Reset Size restores the default for the current mode.

To see the widget over the game, set D2R's display mode to Windowed (Fullscreen). Always-on-top windows can't appear over exclusive Fullscreen mode.

Lock Widget (Click-Through) stops the widget from getting in the way while you play. Clicks pass through it to the game, and it can't take focus, be dragged or be resized. In Run Only mode the manual item field is hidden while the widget is locked. To move or resize the widget again, turn the lock off in Settings → Widget Settings.

Backups

Settings → Database creates a backup of the database or restores one. Restoring replaces all current data, including characters, grail progress, run history, settings and vaulted items; the confirmation names the backup file and offers Back up first, which receives focus when the dialog opens and is highlighted until a backup has been made. Vaulted items exist only in the database, so any that aren't in the backup are lost. The app checks the backup first and refuses files that aren't intact app databases. If the restore fails, your current data is kept. If a restore fails and the app also cannot put the previous database back, it keeps that database next to the live one as grail.db.pre-restore so the data can still be recovered; the next restore renames it to grail.db.pre-restore.<timestamp> instead of overwriting it. These copies are full copies of the database and are never deleted automatically, so delete them from the app data folder once you no longer need them.

Error screen

If a page crashes, the app shows a Something went wrong screen instead of going blank. The title bar stays usable, so you can switch to another page. From the error screen:

  • Try to Recover loads the page again.
  • Reload Application reloads the app window.
  • Copy Error Details copies the app version, error message, stack trace and (when available) component stack to the clipboard.
  • Report Issue opens the GitHub issue tracker in your browser. If it can't be opened, a message appears under the buttons; open the issues page yourself instead.

If the app layout itself fails, the same screen fills the whole window without the title bar, so use Reload Application to recover.

If the error keeps happening, paste the copied details into a new issue.