Using UmaTools

Uma Musume Tools: Local Data and Share Links

Understand browser storage, shareable deck and skill-build URLs, privacy boundaries, migrations, and safe reset options.

Updated September 1, 20264 min read

UmaTools is primarily a static, client-side application. Tool inputs and preferences are kept in the browser with localStorage; shareable configurations are encoded into a URL only when a tool supports URL state.

This distinction matters when debugging a report, changing a schema, or explaining privacy behavior:

  • localStorage is scoped to the site's origin and is not included in normal page requests.
  • Query strings are part of the requested URL and may appear in browser history, server logs, or copied links.
  • URL fragments (everything after #) stay in the browser during the HTTP request, but are visible to scripts, browser history, screenshots, and anyone receiving the complete link.

No application account is required to save these values. Clearing site data, using a different browser/profile, or opening a private window produces a separate state store.

Storage inventory

Shared preferences and interface state

KeyOwnerContents
umatools-themetheme-toggle.jslight, dark, or oled.
umasearch-darkmodetheme-toggle.jsLegacy light/dark compatibility preference.
umatoolsServernav.jsGlobal (en) or JP (jp) data mode.
umatoolsSiteLanguagei18n-core.jsEnglish (en) or Japanese (jp) interface language.
umatools.changelog.dismissedchangelog.jsLast dismissed changelog version.
giveaway-banner-dismissednav.jsWhether the current promotional banner was dismissed.
umafools-offnav.jsApril Fools display opt-out.
umatools.tutorial.optimizertutorial.jsOptimizer tutorial progress and completion.
umatools.tutorial.calculatortutorial.jsCalculator tutorial progress and completion.

Tool state

KeyOwnerContents
optimizerStateoptimizer.jsActive rows, budget, mode, race configuration, targets, and rating inputs.
umatools-saved-buildsoptimizer.jsNamed optimizer build snapshots.
optimizerOfficialEnglishOnlyoptimizer.jsOptimizer official-English filter.
umatools-calculatorcalculator.jsSkills, race configuration, rating inputs, and language/filter state.
calculatorOfficialEnglishOnlycalculator.jsCalculator official-English filter.
umatools-deckdeck.jsActive character, supports, and limit breaks.
umatools-saved-decksdeck.jsNamed deck snapshots.
stamina-checker-statestamina.jsStamina form values and selected unique recoveries.
umatools-token-planner-v1token-planner.jsPreset, filters, held tokens, and song state.
exclude_support_slugsrandom.jsSupport cards excluded from random generation.
umasearch-scantimeocr.jsLegacy OCR/video scan interval, read with a 3000 ms fallback.

Umadle does not persist guesses. Its optional target query parameter selects a target for that page load; without it, the page chooses from the server-filtered character pool.

Shareable URL state

Deck Builder

The Deck Builder uses query parameters:

ParameterContents
cCharacter ID or slug.
sComma-separated support IDs or slugs.
lbComma-separated limit-break stops, included only when at least one card is not MLB.

Opening a valid deck URL takes precedence over the browser's active umatools-deck state for that load. The shared link does not include named saved decks.

Skill Optimizer

The optimizer writes compact state to the URL fragment. Its short parameter names are:

ParameterContents
bCompressed/encoded skill rows and hint levels.
kSkill-point budget.
fFast Learner enabled.
oeOfficial-English-only override.
slSkill/server language override.
mOptimization mode when not the default Rating mode.
cTen comma-separated surface, distance, and style aptitude grades.
rURL-encoded rating inputs.
tComma-separated automatic-build targets.

Long aliases such as build, budget, mode, cfg, rating, and targets remain accepted when reading links. The Deck Builder's Open in Skill Optimizer action uses this format to transfer aggregated hint levels and character aptitudes.

Support Hint Finder

The Hint Finder keeps its active state in the query string:

ParameterContents
hintsComma-separated selected hint names.
modeAND or OR.
rarEnabled support rarities, or none.

The page updates the current history entry as filters change, which makes the address bar itself a reproducible link.

Other query-driven pages

RouteParameterPurpose
/eventsqRuns the event search on load.
/umadletargetSelects a character by normalized label when it exists in the active server pool.

Schema-change rules

Treat local values and shared URLs as small public data formats. Users may return with months-old browser state or bookmarks.

When changing one:

  1. Prefer stable IDs or slugs over display names.
  2. Validate parsed values against current datasets and allowed ranges.
  3. Keep missing fields optional so older records still load.
  4. Add a versioned key or migration for incompatible local-state changes.
  5. Continue accepting old URL aliases when compacting a format.
  6. Never place secrets, account tokens, private images, or personal data in either storage or a URL.
  7. Test malformed JSON and unknown IDs; loading should fall back safely instead of blocking the page.

Inspecting and resetting state

For development, browser DevTools exposes these values under Application > Local Storage. A single tool can be reset without clearing every preference:

localStorage.removeItem('stamina-checker-state');
location.reload();

To inspect a value without changing it:

JSON.parse(localStorage.getItem('umatools-deck') || '{}');

Use the UI's Clear or Delete controls when they exist. They preserve unrelated site preferences and make the intended scope clearer than clearing all site data.