01

Paste your OpenAI key

Stored in this browser only (localStorage). Sent straight to api.openai.com as an Authorization header — never to us, because there's no “us.” Need a key?

02

Drop in your receipts

JPG or PNG, one at a time or a stack. Images are downscaled to 1568px on the long edge before sending. HEIC isn't supported yet — convert to JPG first.

Drag photos here

JPG or PNG · any orientation · up to a few MB each

PRIVACY, IN PLAIN TERMS

What leaves your browser, and what doesn't.

This is a static HTML page I host on a personal subdomain. Open the Network tab in DevTools and you'll see exactly two hosts: wherever you loaded the page from, and api.openai.com. That's it. I'm not affiliated with OpenAI — your key goes to them, your bill comes from them.

Leaves your browser
Your API key (as an Authorization header) and a downscaled JPEG of each receipt — only to api.openai.com.
Stays in your browser
Original full-resolution photos. The cropped/warped outputs. The parsed JSON. None of it is uploaded anywhere.
Never collected
No accounts, no cookies, no analytics beacons, no third-party scripts. Close the tab and everything's gone.

QUESTIONS

The things you're probably wondering.

How do I get an OpenAI API key?
  1. Go to platform.openai.com/api-keys and sign in.
  2. Click Create new secret key. Give it any name.
  3. Copy the sk-… string and paste it into step 01.
  4. Add a small amount of credit at Billing. A few bucks tends to go a long way — usually hundreds of receipts, but OpenAI sets the rate, not me.
What will it cost me?

The tool itself is free. The actual cost is whatever OpenAI charges you for the vision API call, billed directly to your OpenAI account. I'm not affiliated with them and don't know your exact rate — check their pricing page for what applies to you.

Anecdotally, from my own use, it's tended to be somewhere around:

ModeRoughly
Fast ~1¢ per receipt
Batch under half a cent per receipt

Your mileage will vary with image size, model pricing changes, and whatever OpenAI's doing with Batch discounts that week.

What exactly leaves my browser?

Your API key is read from the input and sent as an Authorization header on requests to OpenAI. Receipt images are downscaled to 1568px on the long edge, then sent (base64-encoded) to OpenAI for OCR. The model's structured response is parsed locally and used to crop and warp the image in-browser. Nothing is sent to any other server.

Something says “review” — what do I do?

A receipt is flagged review when a critical field (brand, date, amount) is missing, the date isn't a valid YYYY-MM-DD, the detected corners don't form a plausible rectangle, or the model itself reported poor quality. The JPG and JSON still download — just open them, fix the field by hand, and move on.

Who made this? Is it a product?

Just a person, not a product. I built it to speed up my own tax prep and put it online in case it helps someone else. It's MIT-licensed, hosted on a personal subdomain, no signup, no payment to me, no analytics beyond anonymous pageviews. If you want to tweak it, fork the repo. I'm not affiliated with OpenAI; I just call their API.

Why not just use a SaaS OCR product?

Plenty of them exist and some are great. This one exists because I personally didn't want to hand my receipts — vendor names, amounts, dates, sometimes my home address — to yet another company whose retention policy I'd never read. Bring your own key, run it on your own machine, ship the output into your own folder. Close the tab and it's gone.