Help

Everything the app does, in the order you would meet it.

How it works

Profit.tf is a ledger for TF2 trading. It reads your Steam inventory, helps you notice what is new in it, and keeps a record of what you paid against what you sold for. Nothing is bought or sold here: this tracks trades you make elsewhere.

  1. Scan your inventory. The first scan is a baseline, so nothing is flagged as new.
  2. Trade as usual. The next scan tells you what arrived since the last one.
  3. Log what you paid for the items worth tracking, and where you bought them.
  4. Mark an item sold when it goes, with the price and the storefront.
  5. Read your profit, ROI and hold times on the dashboard.

You only ever log the items you care about. A ledger of every crate and weapon drop would bury the trades that matter, so items reach the ledger because you put them there.

On a phone the links along the top move into the menu button beside your avatar. Dashboard, Events, the tools and, if you have it, Admin are all in there.

This is a beta

The Beta badge in the header is not decoration. Profit.tf is being built while people use it, which is deliberate, and it is worth knowing what that means for you before you put two years of trades into it.

  • Things move. Tabs get renamed, controls get relocated and defaults change. When that happens this guide changes with it, so it is the place to check when something is not where you left it.
  • Your ledger is kept, not experimented on. Nothing here rewrites what you recorded, prices are snapshotted onto an entry when you save it rather than recalculated later, and the database is backed up daily.
  • Keep your own copy of anything you would hate to lose. Not because we plan to lose it, but because one person runs this and that is the honest advice for any small site.
  • When something looks wrong, say so. A bug you mention is usually fixed the same week. Suggest, at the bottom of every page, is a box that goes straight to whoever is building the site, and Contact beside it is for when you need a reply.

Beta does not mean your data is fair game. What we can and cannot see is the same either way, and the privacy page is the long version of it.

Scanning your inventory

The Scan button sits at the top right of the dashboard. It reads your own inventory only, and there is nothing to paste or configure: signing in through Steam is all the identification it needs.

  • Your Steam inventory privacy must be set to Public. This is the single most common reason a scan fails.
  • The first scan is a baseline. It catalogues what you already own without flagging any of it as new, because on day one all of it would be.
  • Later scans compare against the previous one and report how many items are new, and how many of those look notable.
  • A scan that finds nothing changed says so rather than pretending it did work.

The dashboard also scans by itself when you open it, at most once an hour, since seeing what has arrived is usually why you came. It is quiet about it: you get a message only when it finds something. If it was not due, if another tab has just done it, or if Steam refuses, nothing happens at all. A scan you did not ask for does not report its own failures, so if you want to know, press the button.

You can still scan by hand whenever you like, and the button is not held to that hour. There is a ceiling of ten scans an hour, which exists to stop a stuck browser tab from getting Steam to refuse the site for everybody. Scanning twice in a row costs nothing and nobody reaches ten by using the site.

New finds

After a scan, anything notable that arrived since last time appears as a strip of cards above the tabs. This is the shortcut from "something showed up" to "it is in the ledger".

  • Click a find to open the entry form with the item already filled in. Add what you paid and where, and it becomes a ledger entry.
  • Dismiss a find to say it is not worth tracking. An MvM kit fabricator that landed the same day as a real trade should not sit there forever.
  • What counts as notable is yours to set. Settings lists the categories: unusuals, australiums, stranges, spelled items, kits, fabricators, war paints, painted items and items carrying strange parts. Everything is flagged until you narrow it, and narrowing it changes what the strip shows straight away, with no need to rescan.

Dismissals last until the next scan, which works out a fresh set. The strip disappears entirely once it is empty rather than leaving a heading over nothing.

Logging what you paid

An entry records one item: what you paid, where you got it, and when. Open the form by clicking a find, an item in the Inventory tab, or a row in the ledger.

  • Naming an item searches as you type, and a crate series is a search of its own: "#103" finds the Supply Munition that carries it and "#81" the Strongbox. A few of the oldest numbers belonged to a crate that has since been re-used, and those offer the handful it could be instead.
  • Price paid has three boxes: keys, ref and dollars. Type whichever figure you have and the others fill themselves in at today rate, so there is nothing to switch before you start. The trade is recorded in whichever side you typed, and a line under the boxes says which that is, because a trade priced in keys stays priced in keys.
  • Paste, next to a price, fills it in from a price you copied out of the Steam market converter in Tools. It brings the unit with it, so a cash price is recorded as cash and can never land in the keys box.
  • Acquired from is the storefront or source, shown with its logo wherever there is room for one. The list is managed for everyone, so if one is missing it can be added centrally.
  • Date found defaults to now and can be backdated for a trade you are catching up on.

The small logos on a row are price checks: backpack.tf, pricedb, Marketplace.tf, Mannco.store, STN Trading and the Steam Community Market, each opening that kind of item on that site. An "sp" chip searches the Skinport market for it, filtered to its quality, so what you get is what is actually for sale there and an item nobody is selling comes up empty. Skinport puts every unusual effect of a hat on one listing, so for a specific effect the gladiator.tf chip is the one that can answer. A "gl" chip opens its sales history on gladiator.tf, which asks you to sign in with Steam before it shows you anything. Beside them, an "item" chip opens this exact copy on backpack.tf: its history, who has owned it before you, and whether it has been duped. That one needs a real item behind it, so it appears on rows that came from a scan and not on ones you typed in yourself. A row only shows the ones it can address, so an entry logged before we started recording item names has fewer of them.

A key price is recorded alongside the entry rather than applied later. Your two-year-old trade is never re-valued at the current key rate, which would rewrite history every time the market moved.

Kit Fabricators and what they cost to craft

A Kit Fabricator is not finished when you buy it. It still needs robot parts and a killstreak weapon before it becomes a Kit, and those cost real money that belongs in the trade. Open one and the form works out what it still needs, prices it, and offers the figure beside a "Spent to craft" field.

Once you have built it, the row should be the kit rather than the fabricator. Fill in what the parts cost and the form offers to make that change for you, keeping what you paid and what you spent building it. A scan can also spot it: if a fabricator leaves your backpack and the kit it was for turns up, the dashboard asks whether you built it. It asks rather than assumes, because from the outside that looks the same as trading the fabricator away and buying the kit, and guessing wrong would put the wrong cost on the row. Answer yes and the entry opens on its build cost, because the parts were spent outside your inventory and a scan has no way of seeing what they cost.

  • The estimate reads the recipe off the item itself, so it lists the exact parts and quantities that fabricator is still owed. Open "What it still needs" to see them.
  • The field starts empty and stays empty until you fill it in. Buying a fabricator and crafting it are two different days, and sometimes only the first one happens, so nothing is added to the trade until you say what you spent.
  • "Use estimate" fills the field with what we worked out, and you can then change it to what the parts actually cost. Whatever ends up in the field is added to your cost basis and taken off the profit when the item sells.
  • The Paid column shows the two added together, so a fabricator reads as one number rather than a sum you have to do on every row. Hover or tap it for the split, one labelled line each: what went to the seller, and what the parts cost. If the two were paid in different currencies they stay side by side, because adding dollars to metal would need a rate and would be a figure nobody paid.
  • A Kit keeps the "Spent to craft" field, so a kit you built can say what it cost whether you fill it in at the time or come back to it a month later. A kit you simply bought leaves it empty, the same way an unfinished fabricator does.
  • A row with a craft cost on it wears a "crafted" badge next to the item name. Filling that field in is the moment a fabricator became a Kit, so the badge is how you tell at a glance which of your fabricators are still fabricators. Hover it to see what the parts cost.

Part prices are built in rather than fetched, because they barely move: most robot parts have traded at a scrap to a refined for years. That makes the estimate close but not exact, and it is the reason it is offered rather than applied.

A fabricator you have already fed parts into reports only what is left, which is why the estimate says "to finish" rather than "to craft". Feed it more and the estimate drops.

Feeding a fabricator gives it a new id in Steam, as though it were a different item. Your ledger row follows it, so it will not turn up again as a new find and you will not end up with two rows for one fabricator. The next scan also refreshes what it still needs.

Marking an item sold

Press Sell on the row and the entry opens with the sale ready to fill in: the price, the storefront it sold on, and the date. That closes the position and moves it into your realized profit. A row that has sold says Sold instead, and pressing it opens the entry the way clicking the row does, which is where you would reopen it if you marked it sold by mistake.

  • Sold price, like the buy leg, can be cash or keys, and the two do not have to match. Buying with cash and selling for keys is a normal trade and is recorded as one.
  • A sale needs a price. Marking something sold and leaving the price empty is refused, because what it used to save was an entry reading as a total loss that dragged your ROI down with it.
  • An entry with no sale is an open position. It counts toward what you are holding, not toward what you have made.
  • Hold time is worked out from the two dates, so backdating either one keeps it honest.

Trades paid for partly in items

Not every sale is paid in pure. Sell a kit for 22 keys and a spelled Degreaser and the ledger needs to know those two things are one trade, or the kit reads as a loss and the Degreaser reads as a purchase you never made.

Log the item you received the way you would log anything, with what you valued it at as the price paid. Then open the trade you sold and use "Items received in this trade" to search your ledger and pick it. A mixed trade can bring back more than one item, so you can pick as many as it did, and each one is saved as you pick it rather than waiting for Update. The results carry the same badges the ledger does, so two of the same weapon are told apart by their spells, sheen or parts.

  • The trade you sold now reads as its money plus that item. 22 keys and a Degreaser you valued at 20 reads as 42, marked "est" because part of it is still a guess.
  • When you sell the received item, the trade it came from updates itself to what the item actually fetched. Sell the Degreaser for 28 and the kit reads 50. You do not go back and correct anything.
  • Both halves of a mixed trade wear a badge under the name: "from mixed trade" on an item you received, and "mixed trade" with a count on the trade itself. Clicking either shows just that trade and everything it was paid with, so the sum is on one screen instead of scattered by date across pages. The trade itself comes first and glows, since everything under it is part of its price. It reaches past the tab you are on, because the item is usually open while the trade is sold and neither tab holds both halves. "Show the whole tab" puts it back.
  • It shows "credited" instead of a profit. That is not a missing figure: its whole value already counts on the other trade, and counting it twice would inflate your profit by the difference. Hover it to see what it carried, or click it to open that trade.
  • An item that is already part of one trade will not be offered to another, so you cannot quietly move its value out of a total you are not looking at.
  • Because of that, a received item is not an open position and is not part of what you have spent. Nothing was spent on it, and the money that bought it was spent on the trade it came from.
  • An item you received and then traded on for something else keeps the chain intact, however long it gets. Whatever the chain eventually turns into is what the original trade was paid, and the original trade stays marked as an estimate until every item along it has sold.

The one thing the ledger cannot tell you is whether you valued the item right when it arrived. Hover a received item that has sold and it shows the difference between the two, which is the only place that question gets answered. It is a reading, not a profit, and it is not in any total.

Tabs

The dashboard is a set of tabs over the same data rather than a set of pages, so you never scroll past one to reach another. If you keep more tabs than fit the width, the strip scrolls sideways instead of stacking up and pushing everything down. On a long ledger, an arrow appears in the bottom corner once you are half way down and takes you back to the top.

  • Inventory is everything the last scan saw. This is where you go looking for things to log. Its search box reads the badges and the classes as well as the name, the same way the ledger does, so "team shine", "elite", "incinerator" or "scout" find those items even though none of those words is in the item name. A minus leaves a word out there too.
  • Ledger is every entry you have made. This is the app proper.
  • Keys is an optional tab for working the cash-to-keys cycle. It is off by default and turned on in Settings.
  • Anything after those is a saved view of your own.

Every tab has its own address. /dashboard#ledger is a bookmark that lands on the ledger, and a link to a saved view opens that view. A link you followed always beats the tab you were last on.

Filters and saved views

The ledger filters down to whatever subset you want to look at, and a set of filters you keep reaching for can be saved as a tab of its own. Above the table there are four dropdowns, always the same four: status, quality, where it came from and where it sold. Everything else you can filter on lives in a saved view, which has room for all of it.

The totals follow the tab. Pick a saved view for unusuals and the tiles say what you spent on unusuals and what you made on them, not what you spent overall. The chart and the table are reading the same filtered set, so they cannot disagree.

  • Filter by search text, open or sold, quality, where it was bought, where it was sold, and the date range on either the found or the sold date.
  • The search box reads the badges as well as the name, so "team shine incinerator" finds that one kit among nine of the same weapon, and "team spirit" finds everything painted with it. It also reads the classes an item can be equipped by, so "scout" finds Scout hats even though none of them is called one. Typing a class here includes the all-class hats, which is the difference from the class filter above: the box is for looking, the filter is for keeping. Words match in any order, so "sniper team shine" is the same search. A saved view searches the same way the box does.
  • Put a minus in front of a word to leave it out. "scout -allclass" is your Scout hats without the ones everybody can wear, and "strange -australium" is the Stranges that are not Australium. A search that is only a minus works too: "-allclass" is everything else. Hyphens inside a name are safe, so "huo-long" and "well-worn" still find their items.
  • Filter by what the item is rather than only its quality, which is how you separate hats from weapons when both are Strange.
  • Filter by grade, for anything out of a case or a collection. Quality cannot answer this one either: every war paint is a Decorated Weapon, so a tab for your Assassin and Elite skins needs its own filter.
  • Filter by class, for a tab of one class kit. It leaves out the hats everybody can wear, because there are nearly five hundred of them and they are the most-owned cosmetics in the game, so a Demoman tab was mostly hats with nothing to do with Demoman. They have an option of their own, All-class, at the bottom of the same list. A weapon two classes share, like the Pain Train, is in both their tabs. A crate, a key or a kit is in none: those are not equipped by anybody.
  • Filter by slot, which pairs with the class: Soldier plus Primary is a tab of your rocket launchers. Misc is where every cosmetic lives rather than a category of oddments, so it holds your whole hat collection, and the item type filter is the better way to ask that one.
  • Filter on item attributes: unusual effect, killstreak tier, sheen, killstreaker, strange parts, spells, war paint wear, Australium and Festive.
  • Filter crates on whether they can still be opened. A Robo Community Crate can be, and a Naughty Winter Crate never will be again, which is most of the difference between the two. A crate nobody can settle either way stays out of both.
  • Filter by how each leg was priced, which is what gives you a cash-only view, a keys-only view, or everything you bought with cash however it sold.

Set the filters you want, then save them as a view. Give it a name, an icon and a colour and it becomes a tab. Saved views can be reordered: drag one with the mouse, hold one on a touchscreen and then drag it, or focus it and press Ctrl with the left or right arrow. A line shows where it will land, and holding it near either end pulls the rest of the tabs past it.

The summary chart and table

Under the ledger, the summary buckets your trades by period: profit and closings on the date sold, opens on the date acquired. Two counts, on two different dates, because a year of eight buys and one sale is not the same year as one buy and one sale, and a closings-only view cannot tell them apart.

  • Daily, weekly, monthly or yearly. The chart and the table below it read the same buckets, so they cannot disagree.
  • Beside that, a control for how far back to look. Daily opens on the last seven days, because a day-by-day chart of a year is hundreds of bars and progress is invisible in it. The window ends today rather than at your last trade, so a day you sold nothing is an empty bar rather than a day pushed off the end, and a quiet week looks like a quiet week. The other periods open on everything, which is what they have always done.
  • How far back you look is remembered separately for each period, since looking at the last seven days and the last twelve months are two different questions rather than an inconsistency.
  • Trades with no sale date get a row of their own rather than being dropped, which is what keeps the table adding up to the totals above it.
  • The chart shows a stretch at a time rather than your whole history at once: a week of days, a month of weeks, a year of months, ten years of years. With less history than that it uses the space it has, so two years of trading is two wide bars and not two thin ones in a row of ten.
  • The two magnifiers beside the period control how much of it that is: fewer and wider bars, or more and thinner ones. The mouse wheel over a chart does the same, and keeps whatever you were pointing at where it is. Changing the period, or how far back you look, puts it back to normal.
  • The rest of the history is off to the left, and you drag the chart to reach it, the way a map moves. It opens on the most recent bar, because that is usually what you came to look at. On a phone, swipe.
  • Profit and trades are one picture, so whichever of them you drag or zoom, the other keeps step. A month of profit always sits above the trades it came from.

The summary follows the tab, like the tiles do. On a saved view it describes that view, not your whole ledger.

Keys or cash

Money can read in dollars or in keys. The toggle changes the tiles and the chart together, so those never show two units at once.

The ledger table deliberately ignores it. Every row reads in the unit that trade was actually made in, because a cash purchase restated as keys is a number that was never on any receipt, and telling your cash trading apart from your key trading is the point. Hover any price and a small panel gives you the other unit, whichever way the toggle is set, along with anything else that went into the figure. On a phone, tap it instead, and tap away to close it.

Key and refined amounts are shown with the item icons rather than the words. An amount with both parts sets them side by side, and stacks them on two lines when the screen is too narrow for that. Dollar figures keep the dollar sign.

This changes how numbers are displayed, not what was recorded. An entry priced in keys keeps its key price, and converting for display never writes anything back.

Where a trade happened can change what its dollars are worth. A key on the Steam Community Market costs about a third more than a key between traders, because money inside Steam cannot be taken out of it. So a cash price on a trade you mark as SCM converts at the market key price rather than the community one, on both what you paid and what you sold for.

That is the difference between $21 of Steam wallet funds reading as 9 keys, which is what it buys, and 12 keys, which is what it would buy if the money could leave. The line under the price boxes tells you which rate is being used and what it is, so you can check it against what you can see on the market. Change the date and the rate follows it: a trade is always worth what it was worth on the day it happened, not what it would be worth today.

Only the dollars change. A key is still the same amount of refined wherever it was bought. If you have a better figure than the one we filled in, type the keys yourself: whichever box you type in is the one that gets stored.

Gifts, drops and other non-purchases

Not everything arrives by being bought. A gift, a game drop, a craft, a raffle win or a trade-up is recorded as what it was, by picking a source that means that.

This matters because a gift is not a purchase at a price of zero. Treated as one it makes ROI infinite and quietly poisons your average profit per trade. Non-purchases still count toward realized profit and toward what your inventory is worth. They are left out of the ratios only.

The source is recorded onto the entry when you create it, so renaming or removing a source later never rewrites what an old entry was.

Events

Events, next to Dashboard in the header, shows what the TF2 item schema has gained since the last time it was reviewed: new cases, what each one can drop, and any new unusual effect names, split into cosmetic and taunt. Between events it normally shows the most recent one.

Effect names show as soon as the schema catches up, which is normally within the hour of Valve shipping. Pictures for those effects come from a separate, manual step and can take longer to arrive; an effect with no picture yet still shows its name. Most effects come in a RED and a BLU version, and an effect that does is tagged with both.

This is not scoped to you. It is one page for everybody, and it reads "nothing new" between events by design rather than as a sign of anything broken.

Tools

Tools is a tab of calculators, next to Dashboard in the header. Nothing in it reads or changes your ledger: they answer questions that come up while you are trading, and then you go back to what you were doing.

The Steam market converter turns a Steam Community Market price into keys. That is not the sum most people do in their head, because the market fee lands on the seller rather than the buyer, so which way round you are going changes the answer.

  • Buying an item costs you the listed price in full. The dollars came from selling keys, and that sale paid the fee, so a key listing at $2.30 only put $2.00 in your wallet. A $23 item is 11.5 keys, not 10.
  • Selling an item is where you pay the fee. List at $23, receive $20, and $20 buys 8.7 keys at $2.30 each.
  • Both boxes are inputs. Type keys instead of dollars and it runs backwards, which is how you find the price to list at to walk away with a round number of keys.
  • The face value figure is shown next to the real one, so you can see how far off dividing by the key price would have been.
  • Answers are written the way a trade is written: 5 keys and 33 ref rather than 5.5 keys, because nobody holds half a key.

Each box has a Copy button, and every price in the ledger form has a Paste button next to it. Copy the answer, open the item, paste it into what you paid or what you sold for, and the keys and the ref land in the right fields. What travels is the whole price including which currency it is in, so a dollar figure can never end up in the keys box.

The key price is filled in from the Steam market and stays editable, and the line under it says when that reading was taken. The cheapest listing is occasionally one odd outlier, and the reading can fall behind, so you can always type the price you can actually see.

Market keys are not the same price as keys between traders, and the converter uses the market one throughout. Steam money cannot leave Steam, which is the whole reason keys cost more inside it. The community rate is shown beside the field for comparison and is never part of the sum.

For a trade you are logging as SCM you do not need this tab at all: the entry form already converts at the market rate. The converter is still the place to work out what to list something at, or to check a price before you have anything to log.

Settings

Settings is behind your avatar in the top right, along with signing out and links to your profile on the sites this one sits alongside: Steam, backpack.tf (both the long-standing site and the newer one, listed separately because people have a preference) and your Mannco store. Those are built from your Steam ID, so they are there whether or not you have ever used any of them.

Settings is split into sections down the left: Appearance, Trading, New finds, and Your account, plus Spreadsheet import and API keys if an admin has turned those on for you. Every control saves the moment you change it, so there is no Save button and nothing to lose by leaving. Each section has its own link, so you can bookmark the one you keep coming back to.

  • Theme: light, dark or whatever your system is set to.
  • Choose which kinds of item reach New finds to review. Everything is flagged until you narrow it, and leaving it alone means a category added later shows up on its own. Narrow it and only what you ticked is flagged, which is how you stop caring about war paints without stopping caring about unusuals.
  • Show bot add commands, for the storefronts that trade through a bot. A row gets an !add command under its name, ready to paste and finish with a price. Items whose value is in attributes a SKU cannot carry (a sheen, a killstreaker, spells, strange parts, paint, and kits and fabricators) are addressed by asset id, so the listing is that exact copy. Everything else is addressed by SKU, which prices every copy you have. That is also why a hand-entered row can have one now: it has no asset behind it, but a bot can still price the item.
  • Show the keys to buy and sell tab, which is off by default.
  • Your account, including signing out everywhere and deleting your data.

Some things only appear once an admin has turned them on for your account: uploading a trading spreadsheet, downloading your ledger as a file, and API keys. If a section is not in your settings, it is not enabled, and asking is how that changes. Anything in this guide marked "enabled per account" works the same way.

Sign out everywhere ends every session on every device, this one included, and you sign in through Steam again afterwards. Signing out normally only clears the session in the browser you clicked it in, so this is the one to use if you think someone else has a way into your account.

Deleting your data deletes it, snapshots included. It is not a flag that hides things.

API keysEnabled per account

This one is off unless an admin has turned it on for your account. If there is no API keys panel in your settings, that is why, and asking is how it changes.

An API key lets a program read your ledger on your behalf. It is how you point an AI assistant at your trading history and ask it questions, without handing over your Steam login.

What an assistant can see is your totals, your individual trades, your ledger grouped by item, your profit over time, your saved views and the current key price. That is enough to answer the questions worth asking it: which items actually made money, which lost it, what you tend to hold too long, and what is worth buying again. Ask in keys or in dollars, whichever you think in.

  1. Create a key in Settings. Name it after where it will run, like "my laptop".
  2. Copy the command it gives you. The key is already inside it, so there is nothing to fill in.
  3. Run it in a terminal, or in the one built into Claude Code. That is the whole setup.
  4. Ask it something. "What did I actually make money on?" is a good first question.

Claude Code and the Claude chat app are two different programs with two different settings files, so that command does not reach the chat app. If you want to ask questions in the chat window instead, the same panel has a config block for it, along with where the file lives on Windows and on a Mac.

  • Every key is read-only. Nothing holding one can add, change or delete an entry, or mark anything sold.
  • A key reads your ledger and nobody else's. There is no key, and no request, that reaches another account.
  • You are shown the key once, when you create it. It is not stored in a form anyone can read back, so if you lose it you create a new one.
  • Name each key after where it runs. When you want to disconnect one machine, the name is how you know which to revoke.
  • Revoking a key stops it immediately. So does an admin turning your access off, and that one stops all of your keys at once.

Treat a key like a password. Anyone holding it can read your ledger until you revoke it, so do not paste it into a shared config, a screenshot or a chat.

One thing worth knowing before you connect an assistant: whatever it reads, it sends to the company running it. That is how those tools work, and it is your call to make. If you would rather your trading history stayed on this site, do not create a key.

What we can see

  • Signing in through Steam tells us your Steam ID and public profile. It never tells us your password, and we could not store one if we wanted to.
  • A scan reads the inventory that is already public on your Steam profile.
  • Your ledger is yours as far as other traders are concerned. There is no route, link or setting that shows one user the entries belonging to another.
  • The person running the site can open your dashboard and see it the way you do, to work out how the app is actually being used and what to fix. It is read only, nothing can be changed while it happens, every view is recorded, and it ends within the hour. The privacy page says the same thing at greater length.
  • The site measures traffic the way most sites do: which pages get visited, and roughly where visitors came from. None of it is tied to your ledger, and none of it is sold or shared.
  • The privacy page is the long version: what is stored, which cookies are set, how long each thing is kept, and how to have all of it deleted. It is linked in the footer of every page.

The picture on each row

Every row draws the item the way the game does, on a coloured background. Three things are added on top of that, and each of them answers a question the plain picture cannot.

  • The background is the item quality: Strange orange, Unusual purple, and so on.
  • Anything out of a case or a collection carries its grade as a bar along the bottom of the picture, from Civilian blue-grey up to Elite red. It has its own strip rather than taking over the background, because the two sets of colours are close enough to confuse: Commando Grade purple and Unusual purple are hard to tell apart at that size, and a bar is never mistaken for a background. Every item that has a grade shows one, whatever its quality, and the grade is written out on a badge beside the name too.
  • War paints and plain Unique items tint the background with their grade as well, faintly. Those two qualities have no colour worth showing (every war paint is the same Decorated Weapon), and a blank white tile behind a skin looks like a missing picture rather than an item.
  • An unusual has its effect drawn behind it, on hats and on taunts alike. Steam has no picture of the two together: ask it for an Unusual Team Captain and it hands back a plain Team Captain, which is why an unusual used to look like an ordinary hat with an expensive name. The effects are kept here, so this costs nothing and works offline of everybody.
  • A few unusual taunts logged a long time ago are drawn plain. Those entries recorded the effect by name, and some effect names belong to two effects, one per team colour, so drawing one would be a guess at which of them you own.
  • A war painted weapon shows the skin it is actually wearing, at the wear it actually has, rather than the bare weapon. Factory New and Battle Scarred are different pictures because they are different items.
  • A killstreak item gets a pale ring around the tile, and a painted item a dot of its paint in the corner. Both are things the name does not always say.
  • A tool shows the thing it applies to, drawn over its own picture: the weapon a kit, a fabricator or a strangifier is for, and the taunt an Unusualifier is for. Every kit of a tier shares one icon, all 120 Unusualifiers share one, and every strangifier in the game shares one, so on its own a tool says what kind of thing it is and never which one.
  • A crate says how many things it can drop, and hovering that shows them, best grade first, along with whether it can roll an unusual. Numbered crates carry their series in the name, because a Series #1 and a Series #92 are different items at very different prices. Cases whose series the game hides do not, for the same reason.

A picture that nobody has falls back to the next best one rather than to nothing: a war paint no image exists for shows the plain weapon, and an item the schema does not know yet shows a question mark. If a whole scan comes back as question marks, that is the schema catching up rather than your backpack, and the troubleshooting notes below cover it.

Unusual effect images are rendered by backpack.tf and war paint images by scrap.tf. Neither site is asked for anything while you use this one, but the pictures are theirs and the credit is owed.

The rest of the site

Two pages sit outside the app itself, and both are linked from the footer of every page, signed in or not.

  • Roadmap: what is being built now, what is queued behind it, and what has been thought about without being committed to. Nothing on it is a promise, and the last group is there so the first two can be believed.
  • Suggest: a box that goes to the person building the site. Reading the roadmap first is worth the minute, since the thing you were about to ask for may already be on it.

If a suggestion of yours turns into something, the bell in the header is where you find out. It carries a number when there is something unread, and opening it marks what is in it as read. There is nothing to sign up for and nothing to turn off: it is only ever used to tell you about something you asked for.

Each one has an × to clear it, and clearing it removes it rather than hiding it. Anything you leave goes on its own after three months. Past ten, the list pages rather than growing down the screen.

Notices meant for everybody are the banner across the top instead, not the bell. The bell is only for things addressed to you.

When something looks wrong

  • A scan fails: check that your Steam inventory privacy is Public. Steam refuses inventory reads constantly and briefly, so the button now tries again by itself up to five times before giving up, and says which attempt it is on. It does not report the attempts that failed along the way, because a run that goes on to succeed had nothing worth reporting. There is nothing to click while it does that.
  • Something says "too many requests": you have hit the hourly ceiling on that kind of request, which almost always means a tab is stuck rather than that you did anything. It clears on the hour. If you keep meeting it during normal use, that is worth reporting, because the limits are set well above what the site asks of itself.
  • A scan says it tried five times: Steam is genuinely unhappy, and the button waits a minute before letting you start again. That wait is the first point at which a sixth attempt could go any differently.
  • Scans keep failing and the error blames Steam: once a run has given up with two of those in a row, the button links to steamstat.us, which says whether the item server is down. If it is, retrying will not help until it is back.
  • A scan error ends in a number, like (502): that is the status code behind it, and quoting it in a bug report is the difference between a guess and an answer. 409 is a private backpack, 429 is Steam rate limiting, 502 is Steam refusing the read, 503 is our item schema still loading.
  • An item scanned but shows no name or image: the item schema updates weekly, so something from an event Valve shipped in the last few days may not be known yet. A banner appears site-wide while the schema is catching up.
  • Your totals look wrong: check which tab you are on. The tiles are scoped to the active view, so a saved view showing a small number is usually the view working correctly.
  • A number reads in the wrong currency: check the keys and cash toggle above the tiles.

Still stuck? Email support@profit.tf, or message us on Steam. You can also read the privacy page, or head back to the dashboard.