Data and storage notice

Privacy

How the hosted NIKKE Lab website and downloadable Windows release handle local data, optional Discord sign-in and cloud sync, ordinary network requests, advertising, and files you choose to open.

At a glance

Discord sign-in and cloud sync are optional. The simulator and browser-local Library remain usable without an account.

An account is not required. Saved account snapshots and battle setups remain in this browser unless you explicitly sync or share them. Signing in by itself does not upload them: a first-sync choice is also required. Later local changes remain on the device until you choose Sync now or explicitly create a scenario link. Only saved Library records are eligible for copying to a private cloud Library. Unsaved scenarios remain on the device unless you create a scenario link. Battle calculations, completed results, event logs, damage audits, co-op working profiles, and optimizer results remain on the device.

Current production advertising remains disabled until a valid Google publisher ID and an explicit-consent system are configured. The public website uses first-party aggregate usage counts as described below. It does not use Google Analytics. Ordinary hosting and content-delivery request records can also exist.

Hosted website

When your browser requests the hosted site, the hosting and content-delivery providers may receive ordinary request information such as an IP address, date and time, requested URL, browser or device information, referrer, and security or error details. That information is used to deliver, protect, troubleshoot, and measure the basic operation of the service. NIKKE Lab minimizes the information it intentionally collects and does not use those request records as a simulator setup library.

The hosted simulator keeps named setups in browser-local IndexedDB. Saved sanitized account snapshots use a separate browser-local IndexedDB library and may contain a user-chosen label, a persistent pseudonymous SHA-256 account fingerprint, and unit build information. That fingerprint is linkable and is not anonymous. Co-op profiles stay in page memory unless you choose to export them, and the one-time handoff from a selected co-op result to the simulator uses short-lived browser-local storage.

Browser-local records do not follow you to another browser unless you use optional cloud sync. Records move between devices only after explicit sign-in and sync choices. Local storage remains the working copy and offline use remains available after the page has loaded successfully. Export important records before clearing site data or replacing a browser profile.

Aggregate website analytics

To improve reliability, NIKKE Lab also counts calculation starts and outcomes (fresh completion, cached result, failure, or cancellation), grouped by tool and broad device category. Elapsed time is reduced in the browser to a range, from under one second to five minutes or more; exact timings are not sent. Import receipt, review and application outcomes, setup and Account Library saves/loads, export initiation, scenario-link creation/copy/application, known public guide views and internal tool clicks are counted separately. No account IDs, filenames, scenario contents, share tokens, raw error messages, or per-person journeys are sent. Existing privacy opt-outs and local/private-build exclusions apply to every event. Only daily aggregates are retained, for up to 400 days.

On nikkelab.com, the browser sends small first-party events for supported page navigations and completed simulator, Damage Benchmark, user-requested Crit & consistency, co-op, Union Raid simulation, custom module, and public Investment Lab analyses (OL, Skills, Cubes, and Dupes). Counts help improve the tools and understand traffic before advertising. The server retains daily totals and separate page/tool, referrer-category, approximate country, and broad device breakdowns for up to 400 days, with expired totals removed during periodic request-triggered maintenance.

Analytics does not send account IDs, Discord identity, imported builds, squad choices, results, error messages, full URLs, query strings, or scenario-link contents. Same-origin requests carry normal site and hosting-verification cookies when present, but the analytics handler does not read login cookies or link events to signed-in accounts. No visitor identifier, fingerprint, cross-site tracker, or raw event history is created. Aggregate reporting is restricted to the administrator.

A browser tab stores only its last counted page-navigation time in sessionStorage. A navigation starts a visit when no previous timestamp is stored or the gap is at least 30 minutes; visits are not unique people. Duplicated tabs may initially inherit this timestamp. The timestamp stays in the browser. Referrers are reduced to a small set of source categories before sending; many apps hide them. The server uses hosting-provided country information when available, otherwise Unknown.

Do Not Track and Global Privacy Control disable collection. You can also exclude this browser below; only this preference is stored in localStorage. Local, downloaded, and private Theorycraft builds do not collect these events. Blocking analytics never prevents use of a tool.

Applies on this browser and device. No login is required. Existing aggregate totals cannot identify or remove an individual visit.

Loading this browser’s preference…

Like any request, the hosting provider receives connection information. To limit abuse, the application also keeps a secret-salted IP-derived rate-limit key separately from analytics, with a one-minute window; expired keys are deleted by request-triggered maintenance, normally within an hour of subsequent activity. Raw IP addresses and user-agent strings are not stored in the analytics tables. Daily totals contain no visitor identities, so an individual visit cannot later be located in them.

Optional Discord sign-in and cloud sync

Discord is used only to identify a NIKKE Lab cloud account. NIKKE Lab requests Discord's identify permission. From Discord's identity response, NIKKE Lab retains only the stable Discord user ID, current username, and optional global display name. Discord's response can include other basic profile fields, but NIKKE Lab does not retain them. It does not request an email address, servers, server memberships, messages, or bot permissions. After retrieving the Discord identity, NIKKE Lab creates its own secure session and does not retain Discord access or refresh tokens.

Starting Discord sign-in creates a strictly necessary Secure, HttpOnly, SameSite=Lax OAuth cookie and a matching one-time server-state hash for up to 10 minutes. After sign-in, NIKKE Lab uses a Secure, HttpOnly session cookie and a Secure, SameSite=Lax CSRF-protection cookie for up to 30 days. The server ends a session after 7 days without activity or 30 days after sign-in, whichever comes first, and stores hashes of the session and CSRF values with session timestamps. Signing out removes the current session; deleting the cloud account removes all of that account's sessions. These essential cookies are separate from advertising consent.

A cloud account also has random internal user and account identifiers, creation and login timestamps, and storage-usage counters. The server returns a random cloud account key after sign-in. It is not a Discord ID, password, access token, or authorization credential. The browser uses it in localStorage to separate account-specific sync checkpoints, including linked local and cloud record IDs, revisions, content hashes, update times, and first-sync status. The site also stores an origin-wide pending-change flag in that browser profile. This coordination state may remain after sign-out or cloud deletion and is removed when NIKKE Lab site data is cleared; it cannot read cloud data by itself.

Cloud sync includes only saved sanitized account snapshots and named battle setups, together with their user-chosen names, local record IDs, supported schema and data versions, integrity hashes, revisions, sizes, and created, updated, or deletion timestamps. It does not upload raw OpenIDs, cookies, ShiftyPad tokens or service responses, a file merely opened for preview, unsaved simulation state, completed results, event logs, audits, co-op profiles, or optimizer results.

Record bodies are kept separately from identity and revision metadata. Every cloud-record read, export, sync change, and deletion is authorized from the signed-in NIKKE Lab session; record ownership is not accepted from the browser as an input. Sync detects concurrent edits by revision and asks the user to choose rather than silently replace two changed copies.

To make retries safe, NIKKE Lab stores a per-account mutation receipt for each cloud create, update, or delete. It contains the operation, random request ID, record identifiers and type, a request hash, result revision, and response metadata—not the record body—and is scheduled for cleanup after 24 hours. Short-lived rate-limit records use pseudonymous keys derived from an IP address or internal account identifier and are scheduled for cleanup after their 10-minute or one-hour windows.

Deleting one synced record queues its body for removal and keeps detailed record metadata as a deletion marker. Unless the user restores it or deletes the cloud Library or account sooner, that marker becomes eligible for asynchronous cleanup after 90 days and may remain longer until maintenance runs. A smaller deletion fence containing only the internal user ID, record type, local record ID, cloud record ID, deletion revision, and deletion time remains until the user explicitly restores that record or deletes the cloud account. This prevents a device that was offline for more than 90 days from silently recreating the same linked record. Minimal object-deletion retry metadata may remain until storage deletion succeeds, and hosting-provider backups or security logs follow the provider's retention processes.

Cloud sync is a convenience for copying current saved records between devices, not a backup or version-history service. Changes and deletions may propagate, older record bodies are not retained as revisions, and the service may be interrupted, changed, or withdrawn. Users should keep periodic independent exports of anything important.

Previous shared scenario links

Scenario sharing is currently unavailable. New links cannot be created, and existing links cannot retrieve or open their snapshots.

Previously stored scenario snapshots remain stored until their owner deletes the cloud account. Deleting only the cloud Library does not remove those snapshots. Copies already imported by someone else remain on their device.

Advertising, cookies, and privacy choices

No live advertising is currently enabled in production. The fail-closed advertising integration requires all of the following before its loader can start: a valid Google AdSense publisher ID, the configured public HTTPS origin, a designated public-information route, and an explicit granted-consent signal. The loader is configured not to start on simulator, import, library, API, or team-planning routes, and the downloadable Windows release contains no advertising integration. Advertising will remain disabled unless its execution is isolated so that navigating from an advertising page cannot expose cloud-account pages or their browser storage to third-party advertising code.

If advertising is enabled, Google and its advertising partners may use cookies, local storage, IP addresses, device or browser identifiers, and page-request information to deliver, secure, limit, and measure ads according to the visitor's consent and applicable law. Learn more in Google's explanation of data from partner sites, Google's advertising technologies notice, and the Google Privacy Policy.

Before live ads are enabled, the site must provide a clear privacy-choices control that allows a visitor to accept or reject non-essential advertising storage before it loads and to reopen or withdraw that choice later. Declining advertising consent must not prevent use of the simulator. Browser-local setup storage used at your request is separate from advertising storage and is explained in this notice.

Optional account importer

Online account capture

When available, Import online lets guests and signed-in users request shared roster data from the server. Discord sign-in is not required. The profile link or account ID is sent in the request body, checked against public ShiftyPad sharing settings without login credentials, and used by the hosted connection to retrieve the roster. Both My Nikkes and Outpost/Recycling Room must be visible to everyone before and after capture. Import only your own account or one whose owner authorized you to use it.

Online capture processes account routing values and roster data transiently on the server. It does not store captured rosters or raw account IDs in its database, normal logs, or a shared result cache. For full build imports, it returns filtered build inputs and a pseudonymous fingerprint scoped to your NIKKE Lab user or guest internet connection. Your browser calculates the requested stats and validates the sanitized snapshot. OL-only imports return selected OL lines prepared on the server. Guest allowances use a secret-derived hash of the address supplied by the hosting provider; raw addresses are not stored in the importer's counters. Guests on the same connection share an allowance. You can review, apply, and save locally; cloud Library storage still requires sign-in and an explicit sync choice. Request limits use hashed identifiers and expiring counters. Normal hosting request records may include route, time, status, and network information.

Your browser downloads public game-table JSON directly from BlablaLink's public CDN to calculate full builds. These requests omit cookies, authorization and referrer information, and do not include account identifiers or build inputs. The CDN receives ordinary connection information, including your IP address and the requested public resource. The browser does not request the official account API or download and execute BlablaLink's application JavaScript for this calculation.

The administrator maintains a dedicated BlablaLink session for online captures. Administrator-only setup creates a single-use connection code lasting five minutes. The local helper sends only cookies from its own dedicated official browser profile directly over HTTPS to the server; no password or session cookie is displayed in the website, clipboard, support details, or normal logs. The server stores this session encrypted with a separate runtime key. Each new connection starts with a seven-day expiry. The administrator can separately enable automatic continuation: successful OL-only imports validated on the server then extend storage to 30 days from that import. Full build imports calculated in the browser do not extend storage. Failed imports, status checks, cookie updates, and enabling the option do not extend storage. Turning continuation off limits the remaining storage period to seven days; reconnecting starts a new seven-day period with continuation off. The service accepts official cookie updates while the saved session is valid, but actual login expiration still requires renewed sign-in. Expiry prevents further use; the encrypted session is removed on the next connection check, when the administrator disconnects, or when the service detects an expired login. Hosting backups follow the provider's retention policy. Disconnecting invalidates ongoing imports. Closing the local helper alone does not disconnect the hosted session.

Browser import bookmark preview

The optional import bookmark runs only when you click it in the official BlablaLink window opened for a NIKKE Lab import. No extension installation is required. Your browser sends its existing sign-in directly to BlablaLink; the bookmark does not read or return cookies, passwords, or session tokens. Requested account data and official stat resources are processed within the BlablaLink page on your device. Raw account responses stay there, and only the complete privacy-filtered snapshot returns through the temporary connection to the requesting NIKKE Lab tab.

The bookmark importer stores a random fingerprint key in NIKKE Lab’s localStorage. It sends this key only through the temporary connection to the official page to create consistent pseudonymous account fingerprints; it is not an authentication credential. Clearing NIKKE Lab site data removes the key and can change these fingerprints. The bookmark does not persist raw account responses or rosters on BlablaLink. Its executable code is included in the saved bookmark, with no remote script loader.

Bookmark imports do not use the shared online-import account or allowance. BlablaLink’s sharing settings and request limits still apply. Importing does not automatically save or sync builds: review, application, local saving, and optional cloud saving remain separate choices.

Browser companion preview

The optional desktop browser companion runs captures in an official BlablaLink tab using your own browser session. It does not read or export cookies, passwords, or session tokens. Account requests and public game-table downloads go directly to BlablaLink, and calculations run on your device. Only a complete sanitized snapshot returns through a one-use connection to the requesting NIKKE Lab tab. These imports do not use the shared online-import account or its allowance. Review, application, and cloud saving remain separate choices.

The extension retains only a random local key used to create stable pseudonymous account fingerprints. It does not retain account IDs, rosters, or credentials. Uninstalling removes the extension’s local key but does not delete builds you separately saved in NIKKE Lab. The companion has no telemetry and runs only on the official ShiftyPad pages. Official service access restrictions and request limits still apply.

NIKKE Lab Account Service

Account Service is NIKKE Lab's default account importer. The local capture option runs on your computer and opens a separate persistent Chrome profile for BlablaLink sign-in. It does not attach to your normal browser profile. The dedicated browser manages the sign-in session for official BlablaLink requests. Passwords and session tokens are not included in the capture page, exported JSON, or normal service logs. Sending the dedicated session to hosted importing requires the separate administrator action described above.

When you choose Capture roster, the service sends the target account routing values to official BlablaLink endpoints, reads visible roster and build data, and calculates stats using public official resources. Raw routing and responses remain inside the local service. Completed downloads contain a sanitized snapshot with build details, calculated stats and their provenance, and a stable pseudonymous fingerprint that links captures on the same installation. The fingerprint is not proof of account ownership. Treat downloaded snapshots as private account data.

Importing, previewing, applying, and saving a snapshot locally in NIKKE Lab do not upload it. Only a validated sanitized record that you save and explicitly choose to sync enters optional cloud storage. The service keeps captures temporarily in memory and retains its separate browser profile and fingerprint key in its local application-data folder across launches. Closing the connection stops its requests and browser but does not erase that saved sign-in. Sign out of BlablaLink in the dedicated browser to end the saved login.

Legacy extension importer

The older userscript remains available under legacy import controls for existing installations. It runs only on the two exact BlablaLink ShiftyPad page origins listed in its install header. When you start a legacy import from NIKKE Lab, the site opens ShiftyPad with short-lived random connection values in the URL fragment. The userscript removes that fragment after reading it and uses a one-use browser message channel limited to the initiating window and reviewed origins. No account lookup or network capture starts until you explicitly choose the import action. The userscript has no analytics, telemetry, or browser-storage database.

To resolve and render the requested account data, the importer sends the OpenID and related routing values only to official BlablaLink endpoints using the browser session available on the ShiftyPad page. It does not directly read cookies or authorization headers, but official requests may use the browser's existing session. Raw OpenIDs, cookies, tokens, routing values, and unfiltered service responses do not cross into NIKKE Lab. Only the sanitized snapshot is returned to the initiating NIKKE Lab tab through local browser messaging. That handoff is not an HTTP upload and does not send the snapshot to project-operated server storage. Manual JSON import and preview also stay in the browser. Only a validated sanitized record that the user saves and explicitly chooses to sync is uploaded through optional cloud sync.

Before direct transfer or download, the importer removes the raw OpenID, game ID, area ID, and credential- or session-shaped fields, then rebuilds the snapshot checksum. The sanitized snapshot still contains substantial account information: a public account label, a stable pseudonymous fingerprint that can link snapshots from the same account, the selected stat profile, owned unit and progression facts, skills, Collection or Favorite Items, Cubes, equipment and Overload options, and captured HP, ATK, and DEF. Treat it and any downloaded backup as private build data. The checksum detects changes but does not authenticate the snapshot or prove ownership of the account.

Saved union raid planner

The Union Raid Planner stores your union name, union ID, region, member names, participation selections, any ShiftyPad profile references you add, and your raid encounters, team labels, damage estimates, mock results, attack assignments, and recorded damage. If you import union members from BlablaLink, the planner also saves their provider account IDs, game region, and the import date. Optional raid syncing adds a snapshot of the current season, difficulty, level, boss HP, and reported attacks, including member names and provider IDs, raid days, damage, finishing hits, and team character IDs and levels. The browser importer uses your existing BlablaLink login on the official site; it sends only the reviewed union, member, and raid details to NIKKE Lab, never your login cookies or password. Snapshots are saved when you choose Save planner and are private to the Discord account that saved them. You can reopen them on another device. Profile links are reduced to their account reference; login credentials are not part of the member list.

Signing out or disconnecting BlablaLink does not delete a saved union list. Unsaved edits are temporarily retained in the current tab, separated by account, to recover from navigating away; use Save planner to make them available on other devices. Edit or remove member entries and save to update it. Deleting your cloud account also deletes its union list. Union lists are separate from synced Library records and are not included in the Library's export or library-only deletion.

Downloaded Windows release

Battle scenarios, simulations, damage audits, Crit Outcomes, Scenario Compare, optimizer inputs, and JSON files you manually open are processed by the bundled local application. It serves its interface only at 127.0.0.1:41739; that loopback address is available to your PC, not your local network or the public internet. The release has no Discord sign-in, cloud sync, advertising, analytics, telemetry, or remote setup database.

Named setups are stored in a local SQLite database under %LOCALAPPDATA%\NIKKE Modular Battle Simulator\data. Saved sanitized account snapshots are stored separately in IndexedDB in the browser profile that opens the fixed local address. Before a database schema migration, the launcher creates a uniquely named SQLite backup. It keeps every matching migration backup from the last 30 days and always keeps the newest matching backup even when older; additional older backups are removed on a best-effort basis.

After the ZIP has been downloaded, normal application requests go only between your browser and the bundled loopback server. The simulator does not connect to the game client, read game memory, or collect credentials. To capture fresh account data, run Account Service separately and import its sanitized JSON. The legacy userscript can also return a sanitized snapshot through local browser messaging. Creating a new snapshot requires internet access to official BlablaLink resources; an existing JSON backup can still be imported offline.

Local storage is not a security boundary against other software already running as your Windows user. Do not store secrets in scenarios or account snapshots, and keep Windows and your browser protected.

Delete, export, or uninstall

Hosted website

Hosted cloud controls are available from the Library after Discord sign-in. They affect cloud copies only as described below; local copies remain separately controlled by this browser.

  • Use Export, Download backup, or Export all cloud records before deleting anything you want to keep.
  • Local delete controls remove the copy from this browser. A later sync propagates a linked local deletion only after checking its cloud revision.
  • In the Library's Account & data menu, you can sign out without deleting data, delete the entire cloud Library while keeping local copies, or delete the cloud account and all of its active cloud records and sessions.
  • Clear site data for the hosted NIKKE Lab origin in your browser to remove its IndexedDB, caches, other browser-local storage, and any advertising-consent choice stored for this origin if advertising is enabled later.
  • If advertising is enabled later, use the site's privacy-choices control to withdraw or change advertising consent without deleting simulator setups.

Export all cloud records downloads a plain JSON file containing every active synced Library record and its cloud metadata at that moment, plus the minimal deletion fences that still prevent stale-device restoration. It excludes detailed deleted-record metadata, Discord identity, the internal user ID and cloud account key, cookies and sessions, mutation receipts, rate-limit or security records, and provider logs. The file can still reveal account labels and unit builds, so store it privately. It is a portability copy, not a guaranteed recovery backup.

Signing out or clearing browser data does not delete cloud records. When Delete cloud Library succeeds, active records, detailed deletion markers, and mutation receipts are removed; usage counters are reset and record bodies are queued for removal, but minimal deletion fences, the Discord identity link, and signed-in sessions remain. When Delete cloud account succeeds, active records, detailed deletion markers, deletion fences, mutation receipts, identity and account-link data, usage counters, and all sessions are removed. Neither action deletes this browser's local copies. Limited asynchronous cleanup records and provider backups or security logs may remain as described above. Email deity@nikkelab.com if an export or deletion control fails.

Windows release

  • Delete named setups in the simulator, or remove the Local App Data folder shown above after closing the launcher.
  • Delete saved snapshots in Saved account data, or clear site data for 127.0.0.1:41739 in the browser profile that opened the app.
  • After closing the launcher, remove uniquely named saved-setups.before-schema-…sqlite files to erase retained migration copies. Do not alter the active database, WAL, or SHM files while the launcher is running.
  • Delete the extracted application folder and any browser shortcut or installed-app entry to remove the program. It adds no Windows service, startup entry, browser extension, or system-wide installer.

Data minimization and safe imports

Import only information you own or are authorized to use. Do not put credentials, cookies, authorization headers, Discord OAuth codes or tokens, NIKKE Lab session cookies, raw OpenIDs, or unrelated personal information into an import file, scenario name, support message, or screenshot. NIKKE Lab does not need that information to simulate a battle. Co-op exports use a fresh random profile ID instead of carrying the source account fingerprint, but their visible player label and unit builds can still be personal to that player; share them only with the intended group.

Children

NIKKE Lab is a general-audience analytics project and is not directed to children under 13. Do not submit personal information about a child under 13. If you believe such information was sent in a report or other voluntary message, contact deity@nikkelab.com so it can be reviewed and deleted where appropriate.

Voluntary reports and messages

Simulation inputs, results, and diagnostic details are not sent automatically; the aggregate completion count described above contains none of them. If you voluntarily submit a bug, privacy, or security report to deity@nikkelab.com, send only a version identifier, sanitized exported scenario, reproduction steps, and screenshots needed to explain the issue. Redact one-time launch URLs and tokens, Windows usernames, absolute file paths, and account identifiers. Never send credentials or a complete raw account response. Submitted reports and replies are used only to investigate, respond to, document, and prevent the reported issue, and are retained only as long as reasonably needed for those purposes and ordinary email-provider backup cycles.

Privacy, security, and legal contact

For a privacy request, security report, legal notice, or question about this notice, email deity@nikkelab.com. Include enough information to identify a message you previously submitted, but do not send passwords, authentication tokens, raw account responses, or unrelated personal data.

Effective: September 10, 2026