Free UK delivery on orders over £30  ·  Tracked, dispatched next working day

Powered by TCG Market

Buy Pokémon cards

Raw singles, sealed product and graded slabs. English, Japanese and Korean.

Every raw card dispatched from the UK, tracked Condition checked on every card, with the wear written down Photographed as it ships — never a stock image
Top sets

No cards match that. Try clearing the search or language filter.

Got one worth framing? WAFFLE makes the frames — 5×7in, anti-reflective glazing, 70% UV, acid-free backing. Built for one card. Shop the frames →

Concept — not built

Remembering filters when you leave this page

The problem: tick Base Set, Holo and Vintage, click through to Card Shows, come back — and the grid is unfiltered again. All that work is gone. Right now this page only remembers cards-per-row and whether the rail is open.

Option 1 — put the filters in the URL

The address becomes something like tcg-market.html?set=Base+Set&holo=Holo&q=pichu, rewritten quietly each time a box is ticked.

  • Back button just works — leave for Card Shows, press Back, filters are still there.
  • A filtered view becomes shareable: link “all our Base Set holos” in a post or an email.
  • Survives a refresh, and can be bookmarked.
  • Nothing hidden — what you see is in the address bar.
  • Forgotten as soon as the tab closes — no help to someone returning next week.
  • URLs get long and untidy with a lot of filters on.
  • Must use replaceState, not pushState — otherwise every tick is a history entry and Back needs pressing fifteen times to escape.

Option 2 — save them in the browser (localStorage)

The same trick already used for the cards-per-row buttons.

  • Survives closing the browser entirely — filters are still set days later.
  • Keeps the address bar clean.
  • Invisible state: landing on a filtered grid with no idea why is confusing, and looks like “where have all the cards gone?”
  • Does nothing for sharing or bookmarking.
  • Doesn’t transfer between phone and desktop.

Suggested: the URL, because it fixes the actual problem — leaving the page and coming back. localStorage can be layered on later for returning visitors. Build cost is small either way: all the filter state already lives in one object, and every change funnels through one function, so the save hook goes in a single place.

Related decision: whether Card Shows should force a new tab. Recommendation was no — it’s a main nav item on all seven pages, forcing a new tab breaks the Back button and feels broken on phones, and anyone who wants one can ctrl-click. Fix the filter memory instead and leaving the page costs nothing.