Scan a record's barcode and add it to your Discogs collection. Platter also tracks what your records are worth and how often you play them. It's a web app you can install to your phone's home screen, and it talks to Discogs directly from your browser.
No Discogs account? The demo has a sample collection to poke around in.
- Scanning: barcode by camera or photo, or search by catalog number or artist and title. Batch mode queues scans (offline too) and adds them all at once.
- Pressings: warns about duplicates and wantlist matches, and narrows down pressings by reading the runout or the spine.
- Collection: grid or list, search, filters, sort, crates, and custom fields like condition, price, and location.
- Value: Discogs prices per record, value over time, paid vs. now, and charts you can rearrange.
- Listening: log plays, see what you play most and what you haven't touched in a year, and optionally scrobble to ListenBrainz.
- Import and export: Discogs CSVs in and out, plus a backup of everything Platter keeps locally.
There's no backend database. Platter stores its data in the browser and calls api.discogs.com directly. "Log in with Discogs" uses OAuth, and a small Cloudflare Worker (worker/) signs requests with the app secret. To sign, it gets your OAuth token and token secret and the URL being requested; it doesn't store or log them, and Discogs' responses go straight to your browser. Personal access tokens skip the Worker entirely.
Platter also uses MusicBrainz and the Cover Art Archive for barcodes Discogs doesn't know, Apple's search to find albums for the streaming links, and ListenBrainz if you connect it. Photos of runouts and spines are read on the device with Tesseract.
npm install
npm run dev # http://localhost:5173
npm testLocally, sign in with a personal access token or open /?demo. To re-record test fixtures, put a token in .env (see .env.example) and run npm run fixtures.
It runs on the Cloudflare Workers free plan.
- Point
routesinwrangler.jsoncat your domain, and updateALLOWED_ORIGINSinworker/index.tsand theog:tags inindex.html. - Register an app at discogs.com/settings/developers with the callback
https://<your domain>/auth/callback. Discogs doesn't allow "Discogs" in app names except as " for Discogs". - Store the key and secret with
npx wrangler secret put DISCOGS_CONSUMER_KEYandDISCOGS_CONSUMER_SECRET. npm run deploy
Skip 2 and 3 if you only need personal access tokens.
MIT
This application uses Discogs’ API but is not affiliated with, sponsored or endorsed by Discogs. ‘Discogs’ is a trademark of Zink Media, LLC.







