ForceBuyOpen ForceBuy

Changelog

Every ForceBuy release of the last 30, newest first: new features, changed behaviour and fixed bugs, with the cause of each fix. The full history is in the changelog on GitHub.

0.28.0browser extension for everyone

Browser extension

  • NewSetup and syncing are now easier than ever with the browser extension. ForceBuy Connect is open to every account, in Chrome, Edge and Firefox. It hands your Steam renewal token (and, if you switch it on, your Buff163 sign-in) to ForceBuy after every new sign-in in that browser, so you no longer copy cookies from the developer tools. Install it from the Chrome Web Store (Chrome and Edge) or from Firefox Add-ons; the buttons are under Settings > Marketplaces > Browser extension and in Setup. The store keeps it up to date by itself.
  • The ZIP download is gone. The stores are now the only way to install the extension. If you loaded the ZIP unpacked, remove that copy in chrome://extensions, install ForceBuy Connect from the store and connect it again.

Pages

  • FAQ and How it works describe the extension: what it reads, where it sends it, and how to stop it.

0.27.7server security updates

Server

  • forcebuy.net runs on Node.js 24.22.1 and cloudflared 2026.10.3. The server rebuilt its image from a cached base and stayed on Node.js 24.21.0, which has the Brotli decoding flaw known as HTTP2Shell (CVE-2026-111497) and weaker TLS hostname checks on the requests to Steam and the marketplaces. The tunnel to Cloudflare still trusted eight compromised eMudhra certificates. Both versions are now fixed, so a deploy cannot fall back to an older one. You do not need to do anything.

0.27.6menu folds the way it opens

Navigation

  • Closing the side menu no longer makes the page jump. The page took its wider width at once and then slid back along with the menu, which showed as one jump at the start. Now the menu folds first and the page then takes the space it left, the way opening works in reverse.

0.27.5no shadow over the top bar

Navigation

  • The shadow above the top bar's figures is gone too. Value and P/L carried a note on their selling fee that opened above the figure, which at the top bar is outside the window, so only its shadow showed over the value. The top bar no longer has that note, and elsewhere such a note now opens below the figure when there is no room above it.

0.27.4quieter top bar

Navigation

  • No pop-up box over the page when you point at the figures in the top bar. Value, P/L and positions showed a tooltip with a shadow that covered the top of the page beneath them; it is gone.

0.27.3menu opens into its space

Navigation

  • Opening the side menu no longer pushes the page along. The page took its narrower width only after the menu had finished gliding open, so the table slid right and then re-flowed once more at the end. Now the page takes its new width first and the menu unfolds into the space beside it.

0.27.1pictures without waiting

Pictures

  • Item pictures show at once. Pictures were fetched from Steam only when someone first looked at them and then waited in line behind other requests, which took seconds and at busy times half a minute. ForceBuy now keeps every catalogue picture on its server, fetched ahead of time, and the pictures of the day's top risers and fallers as soon as the list is built.

0.27.0stickers and charms in an item's cost

Cost and profit

  • NewStickers, charms and name tags you put onto an item count in its cost. An item's cost is now its own price plus what you paid for each sticker, patch, charm, name tag or StatTrak swap tool on it, not their market price. The cost column, the item page and its timeline show the item's own price and each thing on it apart. A charm taken off leaves the cost again and is an item of its own. A scraped sticker's cost stays with the item. If the item's own price is not known, nothing is added to it and the sticker keeps its own result. Each kind can be turned off in Settings > Valuation.
  • Profit moves where you applied stickers or charms: the loss that used to show on the sticker itself (it was gone, but its price was counted) is now part of the item it went onto, and sales of such items show a result that includes it.
  • CSV export of holdings: new columns at the end for the cost of what was put onto each item and the cost including it.

0.26.0more exports

Export

  • NewHistory, purchases, sales, storage units and collections as CSV. Settings > Export / backup now offers a spreadsheet of each list next to the Holdings file: the inventory history with one line per item moved, purchases and sales with one line per payment (for a sale its gross, net, cost and result, and where the copy went), the storage units, and the holdings of all collections or of one. Times are in UTC.
  • The export button on a collection's page is gone; that file is now in Settings with the others.

0.25.0notifications one by one

Notifications

  • NewMark a single notification read, or remove it. Next to each entry in the bell are two small buttons: a tick marks it read without opening it, a cross takes it out of the list. A removed notification does not come back for the same event; a counting line such as "2 more alerts today" returns when it counts up. The title row with "Mark all read" now stays at the top while the list scrolls.

0.24.14smoother side menu

Navigation

  • The side menu glides smoothly again on long lists. While it opened or closed, the page beside it changed width in every frame and the browser had to lay out and draw the whole list each time, which made the motion stutter on Holdings. Now only the menu changes width and the page slides along in one piece; it takes its new width once, out of sight.

0.24.13column names that stay put

Tables

  • Column names no longer jump while a list scrolls. They were still moved along with the page's scroll, and the browser drew that move a frame apart from the rows. Now a long table scrolls in its own box that fills the page under the filters, and its column names stick to the top of that box without any script, in every browser. The sideways scrollbar sits at the bottom of the box, in view, instead of at the end of the list.

0.24.12the menu makes room

Navigation

  • Opening the side menu moves the page aside instead of covering it. When the folded menu opens under the pointer, or when you fold or unfold it with the button at its foot, it glides to its new width and the page slides along, so nothing on the left edge of a list is hidden. With reduced motion set in your system it changes width at once.

0.24.11steady column names

Tables

  • Column names no longer shake while a list scrolls. They were moved after each scroll step by a script, one frame behind the rows; now the browser moves them together with the rows. Firefox, which cannot do that yet, keeps the old way.

0.24.10filters and column names stay in view

Tables

  • The filter bar and the column names stay at the top while a list scrolls. In Holdings, History, Purchases, Sales, the catalog, Prices, Market and the inventory list the filters stay in reach, and every table keeps its column names right under them until its last row. On a phone the folded filter button stays at the top as well. The column names were meant to stay before, but each table scrolls sideways in a box of its own, and they only stayed inside that box, which never scrolls up and down.

0.24.0column pins

Tables

  • NewFreeze any column with the pin beside its name. Point at a column head and click the pin: the column stays in view while the table scrolls sideways, at the left or right edge, whichever it is nearer to. Click it again to let the column scroll. Works in Holdings, History, Purchases, Sales, Prices, the catalog's variant list and the inventory list, and is kept per table in this browser.
  • Name, Value and P/L in Holdings can be released as well. They stay frozen until you unpin them, as before.
  • When frozen columns would cover most of a narrow window, they scroll along until there is room again; the pins are kept.

0.23.0performance update

Speed and feel

  • Lists no longer collapse while you sort, filter or change page: the rows stay on screen, slightly dimmed, until the new ones arrive. Holdings, collections, history, purchases, sales and the catalog behave this way. The old rows used to be dropped before the new ones were loaded.
  • A new page starts at the top, and Back returns to where you were: opening an item from a long list no longer lands in the middle of its page, and "Next" under a list shows the top of the next page instead of its end. The scroll position belonged to the content frame, not to the page, so nothing reset or restored it.
  • A click anywhere on a holdings row or card opens the preview, not only a click on the name.
  • The preview opens with the item already filled in: name, picture, value and profit/loss show at once from the list row instead of "Loading" and an empty picture, and stepping to the next or previous item no longer waits, because the neighbours are fetched ahead. Resting the pointer on a row or card for a moment also loads its detail and page ahead of the click.
  • Pages you just left open without reloading: data fetched in the last 30 seconds is reused when you come back, and kept for 30 minutes. Job status, notifications and similar live state are still asked for fresh.
  • Dashboard widgets show the shape of what is coming while they load, a figure, an axis, bars or rows, instead of a spinner each.
  • A thin line under the top bar shows that something is on its way when a page, a filter or a save takes longer than a quarter of a second. Background refreshes of what is already on screen do not show it.
  • Lists no longer jump when their rows arrive. The "Showing 0-0 of 0" line under an empty list was pushed down by the rows; it now appears once there is something to page through.
  • Settings, a collection, the catalog prices and the job list show placeholders while they load instead of the word "Loading".

Navigation and shortcuts

  • Pages open faster: the navigation and the frame stay on screen while a page loads, and show a placeholder instead of a blank area. A page is also fetched as soon as you point at its menu entry or highlight it in the palette, and the other pages are fetched quietly once the app is open (not when your browser asks to save data).
  • `g m` opens the market and `g w` the watchlist, and the palette lists both. Both pages were in the menu but had no shortcut, so the keys did nothing.
  • NewPress `?` for a list of all keyboard shortcuts: the list is also in the palette and the account menu.
  • Every page has its own browser tab title ("Holdings · ForceBuy", an item page uses the item's name), so tabs and history entries can be told apart. They all showed the same title before.
  • A link to a page opens that page, also on the first visit. The welcome tour took every first visit to the dashboard, so a shared or saved link lost its target; the tour now starts when you open the dashboard.
  • After opening a page by keyboard, the focus moves to its heading, so a screen reader announces the new page. The focus used to stay on the menu entry.

Watchlist

  • The star reacts at once. It turns on or off in the same moment and is put back with an error message if the server refuses it. It waited for the server twice (set, then reload) before it changed.
  • NewStarring an item says so, and offers "Add alert", which takes you to the watchlist to set a rule. Nothing confirmed the star before.
  • The tooltip of the star follows its state. It kept saying "Add to watchlist" after the item was on the list, because the text was read once on the first hover.
  • Pausing a rule is instant, and a failure puts the switch back.
  • NewDeleting a rule or removing a watched item happens at once and offers Undo, instead of asking first. Undo creates the rule (or the item with its rules) again as a new one. The question was asked even for an item without rules, and a deleted rule could not be taken back.
  • NewEvery row on the Market page has a star, so a mover can go on the watchlist from where you saw it.
  • NewAn item in the catalog has "Watch" buttons beside "Add to holdings", one per condition. The only way was the small star in the price table.
  • A single watched item uses the width of the page instead of half of it next to an empty column.
  • The demo shows a watchlist: three watched items with a rule each, one of them fired. It was empty, so the newest page showed nothing of what it does.

Look and accessibility

  • Gains and losses in the light theme are easier to read on their tinted pills. The text had 4.1:1 and 4.3:1 against the tint; it now has at least 4.5:1.
  • More small text is readable in the light theme: a chart line switched off in the legend (2:1), the "Data from" lines under charts and prices (2.9:1), the current page number under a list (4.1:1) and the +/- before items in History (4.4:1) now reach 4.5:1. They were faded or tinted on top of an already light grey.
  • Tooltips only where they add something. Menu entries, buttons and segmented controls no longer repeat their own label on hover; icon buttons, cut-off text and explanations keep theirs. The expanded navigation used to show the name of every entry again, covering the entry below it.
  • The small arrow beside a navigation entry is large enough to hit (24 x 24 px instead of 20).
  • Item pictures that fail to load show a placeholder icon instead of an empty box.
  • The error state of a list has a "Try again" button and is announced by screen readers. Messages such as "Rule deleted" are announced as well; they were not read out before because there was no live region.
  • Animations stop for people who asked for less motion: the loading placeholders, the start logo and the jump to "How this was worked out" were missed by that setting.
  • Collections use the app's chart colours instead of their own, so they match in both themes. Collections you already coloured keep their colour.
  • "Open full page" in the preview shows an arrow instead of the icon for an external link. It opens a page of ForceBuy in the same tab.
  • A filter bar has one "Reset filters" instead of two (a button and a link behind the chips).
  • Menus opened inside a dialog or side panel show in front of it, and Escape closes the menu, not the dialog. They were drawn behind it.
  • Deleting a collection is in its "..." menu instead of a red button next to "Edit" and "Export CSV". It still asks first.
  • Screen readers name the chart style button by what it shows ("Line · Auto, Chart style and interval"). It was announced only as "Chart style and interval", so a voice command with the visible words did not find it.
  • The star column in Holdings has a heading for screen readers, so its buttons are announced with the column they belong to.

Holdings table

  • Long pages in Holdings stay quick: with 500 or 1,000 rows per page the table draws only the rows near the screen, so sorting, filtering and opening the page no longer freeze it for half a second. Below 120 rows nothing changes. Above that, the browser's own find (Ctrl+F) only sees the rows on screen; the search field above the table searches all of them.
  • Columns keep their width while you scroll and sort. Each column has a set width and the name takes the rest; a value too long for its column ends in "...". Widths you drag by hand still win, and a double-click on the edge goes back to the default. Before, the widths followed whatever the rows on screen contained.
  • A wide Holdings table shows that there is more to scroll to. A soft fade appears beside the frozen name and Value/P/L columns while columns lie beyond them, and a thin scrollbar above the table scrolls along with the real one at the bottom of the page.
  • The Holdings table starts with eight columns on windows narrower than 1600 px (the "Compact" preset) instead of sixteen, most of which were off-screen. A column choice you made yourself is kept.
  • All rows in the Holdings table are equally tall. The sticker share of the value moved into the tooltip of the Value cell, and the sticker total sits beside the stickers instead of under them.
  • Trade lock no longer shows a red stripe beside the frozen Value column. The cell was cut off by the frozen block and showed the account marker's edge without its badge; the frozen block now has a fade and an opaque ground.

Phones

  • History no longer runs off the screen. Long item names in an event are cut with "..." (and show in full on hover) instead of being clipped mid-word; the item rows had no width limit.
  • Buttons are easier to hit with a finger: their touch area is larger than the visible button.
  • Messages appear at the bottom centre instead of the top right corner, where they covered the header and the bell.
  • The curtain behind the menu fades in instead of appearing at once.
  • Filters on a phone open in a panel from the bottom of the screen, with "Done" and "Reset filters" always in reach. Opened in the page they pushed the list some 450 px down, with "Done" under the last field.
  • Purchases, Sales and the market transactions in History are cards on a phone: name, date and marketplace on the left, the price on the right. The table showed the date and the name, and the price lay beyond the edge of the screen.
  • An item page fits a phone: the name sits under the picture instead of beside it, where it broke into six lines and pushed the copy button and the star off the screen. In "Prices by marketplace" the bid sits under the ask and the time of the reading under the marketplace, so "If sold" is no longer cut off.

Motion

  • Things now fade out as well as in. Dialogs, side panels, menus, the search palette, messages, the opened navigation rail, the selection bar in Holdings, the save bar in Settings and the curtain behind the phone menu take a moment to leave instead of vanishing in one frame.
  • Sections open and close smoothly: the entries under Holdings and Collections in the navigation, "More filters", the phone filter panel and the rule editor in the watchlist. The arrow beside the entries turns instead of changing shape, and it no longer shows a tooltip that covered the page title.
  • The marker under a tab or behind a selected option slides to the new place instead of jumping.
  • Pages fade in when you move to another area; going from item to item or changing a filter does not replay it.
  • Figures count to their new value in the top bar and on dashboard figure tiles, instead of changing at once. Never on the first load.
  • Stars, pins and "Copied" give a short pulse when they take.
  • With "reduce motion" switched on in the system, everything is immediate: loading spinners and the picture placeholders no longer move either.

Other

  • The browser console no longer reports a blocked font on every page. A small part of the monospace font was embedded in the page itself, which the security policy refuses; it is a file again.
  • The fee calculator reads amounts with a thousands separator. "1.234,56" or "1,234.56" used to give no result, because the calculator had its own, simpler way of reading numbers; it now reads them like every other amount field, and so does the currency converter.

0.22.0automatic Steam session

Steam access

  • NewYour Steam session can now renew itself. Connect an account with the new "Automatic" tab: paste Steam's renewal token once (the steamRefresh_steam cookie from a sign-in with "Remember me") and ForceBuy fetches a fresh session about once a day with two read-only GET requests to Steam's own sign-in service, so history and market reads no longer stop when the pasted session ends. The token lasts about seven months and has its own notice; the guide walks through getting it. Pasting a session by hand still works as the "Manual" tab.
  • The access panel shows how the renewal is doing: when it last renewed, until when the token is valid, and, if Steam stops accepting it (for example after you sign out of Steam), what happened and how to continue. Remove the token any time with "Remove"; signing out of Steam ends it as well.
  • The "session ends soon" notice no longer appears for sessions that renew themselves. You get a notice instead when a renewal stops for good or the token is about to run out.

0.21.1watch star, timeline and navigation

Watchlist

  • The watch star is on every item: in the holdings grid and list, in collections and on every variant in the catalog.
  • The catalog's item panel fits without a horizontal scrollbar.

Item page

  • Items in a trade and applied stickers on the timeline link to your holdings. An item you own or owned opens its page; a sticker you used opens the sticker in your holdings, others open its catalog entry.
  • The timeline sits in the left column beside the cost and listings, at half width, with the details of a point below it.
  • The selected point on the timeline is no longer cut off at the top.

Navigation

  • Sub-entries in the navigation fold away. Collections and saved views sit under a small arrow next to their main entry; the navigation remembers which ones you opened and opens the one you are on.

0.21.0watchlist and item timeline

Watchlist and price alerts

  • NewWatch items and get alerted when a price crosses your line. A new Watchlist tab: star an item in the catalog or on a holding, add rules (price below or above, move over 1 or 7 days, gap between two marketplaces, gross or after your fees). Watched items are checked every 30 minutes against six marketplaces; a rule fires once, then waits at least 24 hours and until the price has moved back. At most 20 price alerts a day.

Notifications

  • NewOne bell for everything ForceBuy wants to tell you. Price alerts, a Steam session that is about to end or has ended, a new version, a finished first import, new activity and failed jobs collect in the bell in the top bar. Each kind can be switched off under Settings > Account; "new activity" starts off. With browser notifications on, new entries also show there while ForceBuy is open.
  • A failed job is reported once when it starts failing, not on every retry.

Item page

  • NewEvery item shows its own history as a timeline. How you got it (case, drop, trade, trade-up, Steam Market, Buff or CSFloat), when it went into a storage unit, the stickers, charms and name tags put on or scraped off, its listings and the sale, each on the day it happened in your Steam history. Click a point for the details: the price, what was traded, the stickers. A changed item keeps where it came from, and a trade between your own accounts shows as a move, not a sale. Steam never records taking an item out of a storage unit, so that step is drawn greyed out between the dates it must have happened.
  • The old "Timeline" listed when ForceBuy wrote its records, not when things happened. Those entries are still on the page, folded away under the new timeline as "ForceBuy log".

0.20.4market: only my items

Market

  • Market movers and gaps can be narrowed to the items you own. "Only my items" shows how your own skins moved and where they sell for more.
  • Souvenir skins are hidden from the market lists by default. A type filter (normal, StatTrak, Souvenir) chooses what is shown; normal covers stickers, cases and other items without a type. Since a recent update souvenirs that used to be rare can be made cheaply, and they crowded the lists.

0.20.3catalog links

Catalog

  • Catalog links of StatTrak and Souvenir items find the item. The link searched the catalog for the full name, prefix included, but the catalog lists skins without it.

0.20.2market page fixes

Market

  • Items on the market page link to their catalog entry.
  • The column headers say which price is shown: the lowest listing on each marketplace; buy orders are not used.
  • Large gaps and long marketplace names no longer break across lines.
  • The marketplace comparison was removed. It was hard to read and answered nothing the other two views don't.

0.20.1market page right after an update

Market

  • The market page fills right after an update. Market changes were only computed in the price run every four hours, so after the update the page said "No market readings yet" until the next run; they are now computed from the stored daily prices as soon as they are missing.

0.20.0market movers

Market

  • NewA Market page shows what moved: the biggest risers and fallers of the catalogue, gaps between marketplaces and how the marketplaces compare. Changes compare the first price reading of each UTC day ("as of 02:08 UTC") over 1, 7 and 30 days. Items under $1 or with fewer than 10 offers are left out by default, because they swing by hundreds of percent on a single listing. Gaps show the listing price difference large and what is left after your marketplace fees below it; selling for Steam balance is off unless you switch it on. The gaps list can be sorted by profit or by profit percent, and both lists start with the top 10 and show more on request.

Fees

  • C5Game has its own selling fee in the fee table (5 %, editable). A holding valued from C5Game was netted with your default fee, because C5Game had no entry; saved fee tables get it added once.

0.19.3changelog page

Changelog

  • The changelog has its own page. Every release of the last 30, newest first, at forcebuy.net/changelog and under About in the settings.

0.19.2month-first dates

Steam

  • Steam market purchases and sales on accounts that show dates as "Aug 18" now get their dates. Steam writes English dates month-first for some countries (US), and the market and inventory history readers only understood "18 Aug", so these receipts were stored undated and could not be placed in time or matched to items. Missing dates are filled in on the next market history read; reconnect your Steam session if it has expired.

0.19.1trade cost card

Costs

  • The cost card of a traded item no longer says "nothing was given" when you gave items. After the update the costs were only worked out at each account's daily read, and until then the card read a missing calculation as an empty trade; they are now worked out right after an update, and the card lists what you gave and says when its cost is unknown.
  • Items from other games given in a trade make the cost unknown instead of being left out. Gems, trading cards and other non-CS items have no record in ForceBuy; they were skipped, so such a trade showed no cost source or a sum that was too low.
  • The cost card of a traded item sits in the right column, above "Listed for sale", instead of across the whole page.

0.19.0costs through trades

Costs

  • NewItems you got in a trade carry the cost of what you gave for them. The cost of the items you traded away (and of what they came from) goes to what came back. Several items received are split by their prices on the trade day; without a price for that day their cost stays unknown. The item page shows how the cost was worked out, item by item. Can be turned off in Settings.
  • Money paid or received in a trade can be added. On the item page, for a trade like "item plus money for a knife". If you got more money than your items cost, the difference counts as realised profit on the day of the trade.
  • Items moved between your own accounts keep their cost.
  • "Traded for" lists only the items of that trade. It showed everything traded in the same minute, also with other people, because trades were grouped by the minute rather than by partner.
  • A price you typed counts as the cost of an item you traded up or away. Trade-ups ignored a hand-entered price on items whose record came from the Steam history.

Dashboard

  • Figure tiles show their day change again. Since gross and net, the net line under a figure took a row of its own and pushed the day change and the small chart out of the bottom of the tile; it now sits beside them.

0.18.0gross and net

Gross and net

  • NewEvery figure with a marketplace fee shows both: what the buyer pays and what you keep. The buyer's price stays the big number, what is left after the fee sits on a small line under it - in the header, Holdings, the item page, Collections, History and the dashboard tiles. A Steam sale's buyer's price is worked out from what Steam reports and marked "≈". Hover a figure to see the fee. The sale price field says it wants the price as the marketplace reported it.
  • A stack of sold items shows its total sale price. The figure under a stack's sale price was the total after fees standing under the price of one item.

Realised profit

  • NewRealised profit counts every sale you made, not only the items shown as past holdings. A sale and its purchase are both tied to the item they belong to, also when the item left long ago and has no row in Holdings. Those sales now count in the header and on the dashboard, with the same fees and cost rules as everything else. Before, realised profit was 0 unless "past items" was turned on. Sales whose cost is not known (traded in, no purchase on record) are not counted as profit; the header says how many.
  • NewPurchases and Sales have their own pages. The two sides of History, each with its own filters and saved views. Sales show the cost and the profit of every sale, before and after the fee; a cost taken from a cost rule is marked "rule", and a sale without a known cost says so instead of showing 0. History has the same two columns.

Dashboard

  • NewDashboards by marketplace and origin. A new workspace template, "Marketplaces & origin", shows value by where items came from, realised profit by where they were sold, and purchases, sales and fees per marketplace. Charts can group holdings by "Origin" and "Sold on" and transactions by "Marketplace", and sum the marketplace fee.
  • A trade between two of your own connected Steam accounts is a move, not a sale. It shows as "Moved to own account", has "Own account" as its origin on the other side and does not count as realised profit. The cost does not move with it yet.
  • "Net cash flow" was too high by the CSFloat and Buff163 fees. Steam reports a sale after its fee, CSFloat and Buff163 report what the buyer paid, and the dashboard added both up as they came. Sales are now taken after the fee everywhere; "Amount" is the buyer's price and "Amount after fees" what you kept.
  • "After fees" values use the fee of the market the price comes from. They used one fee for everything, the one picked under Marketplace fees, so an item priced on CSFloat lost Steam's fee and Steam's cash-out rate. The chosen fee now only applies to prices you set by hand and to markets without a fee on record.
  • New measure "Realised P/L before fees" next to the realised P/L.

Export

  • The CSV export has columns for gross and net. Sale price before and after the fee, value and unrealised P/L after the fee, realised P/L before the fee, and which fee was used. They come after the existing columns, so a file you import keeps working.

Storage units

  • Items sold on CSFloat or Buff163 out of a storage unit no longer count as stored. A sale there leaves through a Steam trade that names no item id, so ForceBuy marked some other copy of the same name as traded and kept the sold one in the unit: on one account 38 cases sold in January still counted as held, at their full value. The copy the marketplace says it sold around that time is now the one that goes.

Stickers

  • Stickers on sold items all show their price. On a sold or traded skin, a sticker only had a price when one of your held skins carried the same sticker, so for example two of the four stickers on a sold M4A1-S showed none. The price lookup only collected stickers from items you still hold.
  • Sticker names with a comma stay one sticker. A name like "karrigan (Glitter, Champion) | Antwerp 2022" was read as two stickers, and every sticker image after it moved one slot along. Stored lists are mended once on their own.

Fees

  • Steam fees are exact to the cent. The buyer's price worked out from a Steam sale was 1 to 2 cents too high, and what you keep from a Steam price 1 to 2 cents too low, for three amounts in four. ForceBuy rounded Steam's 15 % as one fee; Steam takes its 5 % and the game's 10 % separately, each rounded down and at least one cent.