How it works

How CryptoTaxOwl keeps your transaction history on your device

The calculator runs in your browser, in a part of the site that ads and analytics can’t reach. Here’s how that works, how to check it yourself, and how every figure is worked out.

Your transaction files never leave your device. CryptoTaxOwl reads them and calculates your report inside this browser tab. We don’t upload them, and the ads and analytics on this website can’t see them: the calculator runs in a separate, ad-free part of the site. To value your trades we download the same price file for every visitor, so even that doesn’t reveal what you hold.

Two parts, one rule

CryptoTaxOwl is two websites working together:

cryptotaxowl.com

The pages you read: guides, explanations, deadlines. This part is funded by a small number of ads and uses cookieless analytics. It never sees your files.

app.cryptotaxowl.com

The calculator, embedded in the page as an isolated frame. It runs only our own code: no ads, no analytics, no third-party scripts. Its security policy stops it connecting anywhere except our own server, and it only ever downloads fixed files that are the same for everyone.

Because browsers keep different origins apart, the scripts on the content pages can’t read what happens inside the calculator frame. The two parts exchange only a short list of messages, such as the frame’s height or which step you’re on, and never amounts, asset names, file names or dates. The single-trade capital gains calculator is the one exception: it takes a few typed numbers rather than files, so it runs directly on the page, and its own privacy note says so.

Check it yourself in two minutes

You don’t have to take our word for it. On a computer:

  1. Open a calculator, for example the UK calculator, and wait for it to load.
  2. Open your browser’s developer tools (F12, or Cmd+Option+I on a Mac) and choose the Network tab. Tick “Preserve log” and clear the list.
  3. Import one of your exchange files and go through to the report.
  4. Look at the requests. You’ll see none that carry your file. Any request from the calculator goes to our own domain for fixed files such as code or rules data, identical for every visitor.
  5. For a stronger test, load the calculator, then turn off your internet connection and import a file. It still works, because the work happens on your device.

How the numbers are worked out

Every import goes through the same stages: each file is recognised by its column headers and read by a parser written for that exchange’s format; rows are turned into a standard list of transactions; transfers between your own accounts are suggested for you to confirm; each transaction is valued in your tax currency; and then a country engine applies that country’s rules.

  • Rules live in data, not code. Thresholds, rates, holding periods and matching windows are kept in a dated rules file for each country and tax year, and each value lists the official page it came from.
  • Exact arithmetic. Quantities and amounts use decimal arithmetic rather than floating point, so a long ledger doesn’t drift by fractions of a penny. Rounding happens only when figures are shown.
  • Every match is explained. A UK disposal shows whether the same-day rule, the 30-day rule or the Section 104 pool supplied its cost; a US sale shows which wallet and lot it used.
  • Tested against official examples. Where a tax authority publishes worked examples, such as HMRC’s pooling examples, they’re used as test cases.
  • Uncertainty is listed. Assumptions you accept, such as treating a deposit as zero cost, are counted and printed in the report.

Where values come from

A crypto tax figure needs every transaction valued in your tax currency. CryptoTaxOwl uses, in order: the value stated in your exchange file; the fiat side of the trade; the value of the other asset in a crypto-to-crypto trade; then a value you enter. It never looks up a price per coin and date from a third party, because that would tell them what you hold. A missing value is never treated as zero without your say-so. The price data page has the details and the currency-rate attribution.

The CSV template

If your exchange isn’t supported, or you keep your own records, use the standard template. It has one row per event and these columns:

date_utc, type, sent_amount, sent_asset, received_amount, received_asset, fee_amount, fee_asset, fiat_value, fiat_currency, account, tx_id, description

date_utc accepts ISO 8601 dates with or without a time. type is one of: buy, sell, trade, deposit, withdrawal, transfer_out, transfer_in, income_staking, income_mining, income_airdrop, income_interest, income_reward, income_other, gift_received, gift_sent, spend, fee, lost or other. The template file with six example rows is available from inside the calculator, and the format is free for anyone to use (CC0). The CSV converter writes files in this format.

Security

  • We never ask for recovery phrases, private keys, API keys or payments. Anyone claiming to be CryptoTaxOwl support and asking for these is not us.
  • If something that looks like a 12- or 24-word recovery phrase or a private key is pasted into any field, the calculator refuses it, clears it and warns you.
  • Nothing is saved unless you choose to. You can save a project file to your own device, or opt in to keeping your workspace in this browser, with a button to clear it.
  • CSV files we produce escape cells that a spreadsheet could otherwise run as formulas.

What it doesn’t do

CryptoTaxOwl calculates and explains; it doesn’t give advice or file your return. In this version it doesn’t decode DeFi positions, NFTs, margin, futures or other derivatives: rows like these are flagged and excluded by default, and listed in the report. It covers individuals, not companies or people trading as a business. If any of that applies to you, or you’re unsure about a figure, speak to a qualified tax adviser. See the disclaimer.