What this tool does
Monitors supply, demand, and prices for items you care about at specific EVE stations and player structures. It pulls live order data from ESI and flags items that need restocking, are priced outside your target range, or are running low on supply-days. Designed for industrialists, traders, and anyone managing multi-location stockpiles.
Getting started
- Add a market. In the top section, type a system name (autocomplete will help) and click Find Markets. Pick the station or structure you want to track. Player structures (Upwell/citadels) require EVE SSO login.
- Add items to watch. Each market card has an Add Single Item field with autocomplete — start typing and a dropdown appears showing matching items with their EVE icons. Click or use arrow keys + Enter to select. Or use Bulk Add to paste an EVE multibuy list or a Copy Items payload from another station.
- Set thresholds. Each item row has two thresholds you can toggle directly on the row: Min Stock (minimum units you want on hand) and Target Days of supply. Toggle on with the green ✓, type a value, and the item turns into an alert if the live market breaks the rule. Floor and Ceiling price thresholds still exist in the data model and fire alerts — their inline columns are hidden by default to keep the table focused on stock health.
- Click Refresh All. Fetches the latest orders and market history. Safe to click often.
Reading the item table
Each item row has 14 columns broken into logical groups separated by thick vertical lines:
- Category — a small colored pill showing the item's broad family (Module, Material, Ship, Drone, Blueprint, etc.). Color-coded by family: cyan for fittings (ship/modules/rigs/drones), amber for raw and tradable goods (minerals/PI/ores/commodities), green for consumables (charges/implants/boosters), purple for intangibles (blueprints/skills/SKINs/decryptors), red for structures and deployables. Unresolved items show a muted dash until the next Refresh populates them.
- Sell Price / Sell Volume / Sell Days — the cheapest sell order, total quantity offered at this location, and how many days of supply that represents based on average regional daily trade volume.
- Sell Avg — average daily traded volume over your chosen window (1d / 7d / 30d — toggle at the top right of the page).
- Buy Price / Buy Volume / Buy Avg — highest buy order, total quantity buyers want to purchase, same regional average. Note: Sell Avg and Buy Avg show the same number — ESI doesn't separate buy/sell trading volume in historical data.
- Min Stock / Tar Days — your two inline threshold toggles and target values. Floor and Ceiling thresholds still exist and still fire alerts, but their inline columns are hidden.
- Status — shows OK if all your enabled thresholds are met, or Restock if anything breaks. Hover for the exact reason.
Visual alerts
- Faint red row tint — the item has at least one broken threshold (broad "needs attention" signal).
- Bright red cell — the specific metric that triggered the alert. E.g., if Min Stock is set to 500 and Sell Volume is 120, the Sell Volume cell is highlighted red.
- Faint yellow row tint — approaching a threshold but not yet in violation ("warning").
- Row hover — amber glow to help track rows across all 14 columns.
- Active Alerts banner — appears at the very top of the page as soon as any item is in alert state. Lists every breaching item across every station with the exact reason. Hidden when all thresholds are met.
Active Alerts banner — Copy Restock button
When the Active Alerts banner is visible, a large red push-button sits on its right side labeled COPY RESTOCK. Click it (or press Enter/Space when focused) and the tool builds a shopping list of every item currently alerting on a stock shortfall — sized to exactly cover the gap — and copies it to your clipboard in Janice / EVE multibuy format (Item Name <tab> Quantity, one per line). Paste it into Janice or into EVE's multibuy window to price or purchase the entire restock in one go.
- Quantity math — for each alerting item, the tool computes max(Min Stock − Sell Volume, Target Days × daily volume − Sell Volume). That way a single order refills the shortfall for both thresholds, not just the tighter one.
- Cross-station aggregation — if the same item is alerting at multiple stations, the quantities are summed into one line. The output is a single deduplicated shopping list, not a per-station one.
- Price-only alerts are skipped — Floor and Ceiling threshold breaches are market pricing problems, not stock shortfalls, so they don't appear in the restock list. If every active alert is price-only, the button will tell you there's nothing to buy instead of copying an empty list. (Price thresholds still fire alerts even though their inline columns are hidden in the table.)
- Success confirmation — a green ✓ flashes over the button after copy, and an italic rainbow "Kai's Button" signature fades in below it for about 10 seconds.
- Clipboard fallback — if your browser blocks the modern clipboard API (usually non-HTTPS contexts), the tool falls back to a legacy copy method automatically.
Per-item controls
- 🔒 Lock row — prevents accidental edits to that item's thresholds. Lock the row, and the toggles and inputs all disable.
- ✓ / ✗ toggle next to each threshold — enables or disables that rule without losing the value.
- ✕ Remove — deletes the item from this market.
- Click item name — copies the name to clipboard with a green "✓ copied" badge, so you can paste into EVE's market search or a shopping list.
Per-station controls
- 🔒 Lock all (far left of Station Globals bar) — locks or unlocks every row in one click.
- Station Globals toggles — stamp a threshold state across all unlocked items at once. Useful when setting up a new market ("enable Min Stock on everything").
- Status filter slider (right side of globals bar) — cycle All → OK only → Alerts only. Hides non-matching rows.
- Refresh — fetches data for this one market.
- Copy Items — copies the full item list with all thresholds as JSON. Paste into Bulk Add on another station to replicate the setup.
- Remove — deletes the market from your watchlist.
- Click station name — collapses or expands the card.
Sorting and scrolling
- Click any column header to sort ascending (↑), click again for descending (↓), click a third time to clear sort and return to original order. Items without data (e.g., price or volume unavailable) always sort to the bottom regardless of direction.
- Sort preferences persist — each station remembers its own sort key and direction across page reloads.
- Stations with more than 20 items automatically get a scrollable table capped at ~600px tall with a custom themed scrollbar. Scrolling is contained: hitting the top or bottom of the table won't bleed into the page scroll.
Navigation while scrolling
When you scroll through a long market's items, three things stay pinned at the top of your screen so you never lose orientation:
- Market card header (station name, badge, system/region, Refresh/Remove/Copy) — top tier
- Station Globals bar (lock-all, threshold stampers, status filter) — middle tier
- Table column headers (Item, Sell Price, Sell Volume, etc.) — bottom tier, still clickable for sorting
You can always see which station you're in, what your global threshold state is, and which column each number belongs to — all while scrolling through hundreds of items. A subtle shadow appears below the pinned headers so they visually lift off the content below.
Auto-scroll on interaction: when you click anywhere inside a market's items table, the page smoothly scrolls so that market's header is at the top of your screen. If you're already there, no scroll happens. Interacting with another market snaps to that one instead.
Column organization
The 14 columns are grouped into logical blocks separated by thicker vertical lines:
- Block 1 — Lock, Item, and Category — row controls, item name, and category pill
- Block 2 — Sell side — Sell Price, Sell Volume, Sell Days (runway)
- Block 3 — Averages and Buy side — Sell Avg, Buy Price, Buy Volume, Buy Avg
- Block 4 — Thresholds — Min Stock, Tar Days (Floor and Ceiling are hidden but still enforced)
- Block 5 — Status and Remove — alert state and delete button
Zebra striping on OK rows and an amber hover highlight make it easy to track a single row across all 14 columns.
Category column
Each item gets a color-coded category pill showing its broad family. The pill is fetched from EVE's universe API the first time you Refresh a market containing that item, then cached forever in your browser — so subsequent scans are instant. Every common category has its own distinct hue, loosely grouped by family on the color wheel so related categories read as related:
Ships & fittings — blue family:
Ship
Module
Drone
Rig
Fighter
Subsystem
Consumables — green family:
Charge
Implant
Raw resources & trade — yellow / orange family:
Material
Asteroid
Commodity
PI Resource
PI Industry
Intangibles & production — purple / indigo family:
Blueprint
Skill
Decryptor
Reaction
Cosmetics — pink family:
SKIN
Apparel
Structures & deployables — red family:
Structure
Str. Module
Deployable
Sov. Struct
Limited-run items — previously "Special Edition":
Collectible — Alliance Tournament prizes, event items, commemoratives, gift packs.
Rare & legacy categories (Celestial, Accessory, Infrastructure, Orbital, Placeable, Planet, Relic, Infantry, Expert Sys.) and items not yet resolved share a muted gray pill — you'll rarely see these in practice.
Sort the Category column to group every module, every blueprint, or every SKIN in one block — handy when you want to sanity-check all fittings for a doctrine or all blueprints in one inventory.
Category filter (per station)
Every station card with more than one distinct category of items gets a Categories: row of pill buttons below the Station Globals bar, showing only the categories actually present in that station's items. This lets you narrow the table to just the modules, or just ships + drones, or any combination — without touching the other stations.
- Click a category pill — filter to just that category. The pill lights up with a glow in its color; the others dim.
- Click additional pills — adds each one to the active filter (multi-select). Rows in any selected category remain visible. Example: click Module then Charge and the table shows modules and charges side-by-side.
- Click an active pill again — removes that category from the filter. If it was the last one active, the filter auto-snaps back to ALL so you're never left with a blank table.
- Click the ALL pill — clears any selection and shows every category again.
The filter composes with the Status filter (ALL/OK/Alerts) — both narrow the visible set independently. Filter state is in-memory only: it resets on page reload. If you want a persistent filter, sort the Category column instead.
Volume window
Top-right of the page has a 1d / 7d / 30d toggle that controls which average is used for Sell Days and Sell Avg / Buy Avg. Short window reacts faster to demand spikes; long window smooths out noise. 7d is usually the right default.
Keeping data fresh
Nothing auto-refreshes. Click Refresh All or a single station's Refresh when you want current numbers. EVE's market data updates on the server every few minutes, so refreshing more often than that gains nothing.
Backup and sharing
- Export — downloads a JSON file with all your markets and thresholds. Keep this as a backup.
- Import — restores from an exported file. Overwrites your current list after confirmation.
- Copy Items / Bulk Add — quick way to propagate the same item list and thresholds across multiple stations.
Privacy and data
Everything stays in your browser's localStorage. Nothing is sent to any server except CCP's ESI (for market data) and Google Fonts (for the Inter font). If you log in with EVE SSO for structure markets, the token is stored in your browser only and used only to call ESI directly.
Troubleshooting
- Structure shows "No access" or "Login for name" — you need to be logged in with a character that has docking access to read that structure's name or market. Click Log In with EVE in the header.
- Item autocomplete shows "still loading" — on first page visit, the tool fetches ~13,000 market-active item names (takes about 10–15 seconds). After that it's cached for 30 days.
- Sticky headers look misaligned — the stacked sticky headers assume standard rendered heights. If your browser zoom is very high or low, the 46px/92px offsets may look slightly off. Normal browser zoom works fine.
- Refresh seems slow — stations with many items take longer because each item requires its own ESI history fetch. Structure markets pull all orders in one call and are usually faster.
- Working across computers — localStorage doesn't sync between devices or browsers. Use Export to download a JSON backup, then Import on the other computer. Saving the export file to a cloud-synced folder (Dropbox, Google Drive, OneDrive) makes this easy.
Credits
Uses public ESI endpoints from CCP Games. Item icons from images.evetech.net. No warranty, no affiliation with CCP. EVE Online is a trademark of CCP hf.