Full-Text Comment Search
Search across all your comments and match them to the videos they came from — even across accounts and data exports.
Your content, your machine. No cloud, no account, no expiry date.
TikTok Archive Viewer is a local-first tool for importing, browsing, and permanently preserving your TikTok data export. It was built for a specific, practical purpose: giving people a complete, searchable record of their favorited, reposted, and DM-shared videos before leaving the platform — without relying on any cloud service, third-party account, or network connection after setup.
The design decisions here were made in service of one principle: this tool should work forever, on any machine, with no maintenance required. There are no external dependencies beyond Python's standard library — no Flask, no FastAPI, no npm packages, no version conflicts waiting to happen. The server runs on stdlib's http.server; the frontend is plain JavaScript. In five years, when every framework has had two breaking versions, this still works.
Data is never sent anywhere. The application runs as a local web server on your machine, stores everything as plain JSON files you can inspect and back up, and contacts the network only when you explicitly request a video download.
How it works
A Python script reads TikTok's JSON data export, extracts video IDs from three sources — favorites, reposts, and DM-shared links — deduplicates across all three, and downloads the videos via yt-dlp with atomic progress tracking. Each download writes its status to a JSON file so the process survives interruption.
A lightweight Python server serves a single-page application that reads the output JSON files and renders your full archive — browsable by video, searchable by comment text, filterable by source. The two components communicate only through the filesystem: clean, auditable, and trivially debuggable.
Architecture
The decision to use only Python's standard library was deliberate. Every external dependency is a future maintenance burden: a package that stops being maintained, a breaking API change, a security patch that requires updating six others. By depending on nothing, the tool inherits the longevity of the Python runtime itself — which is exceptional.
The server uses atomic JSON writes throughout. Progress state, configuration, and archive data are all written atomically to prevent corruption from interrupted runs — a small detail that makes a meaningful difference for a tool designed to process thousands of items in a single session.
The single-page application is intentionally framework-free. Vanilla JavaScript handles routing, state, and rendering. There is no build step, no bundler, no transpilation. The browser loads one HTML file, one CSS file, and one JS file — and everything works.
Capabilities
Search across all your comments and match them to the videos they came from — even across accounts and data exports.
Import exports from multiple TikTok accounts and browse them side-by-side in a single local interface.
Download videos in configurable batches via yt-dlp, with live progress polling and per-item status tracking. Resume interrupted sessions without re-downloading.
Videos shared via DM are displayed alongside their original conversation thread — preserving the context that made them memorable.
Serves a clean web UI on localhost:8642 — accessible from any browser on the same machine or local network, with no installation beyond Python.
No analytics, no tracking, no external requests. Every byte of your data stays on your machine — the application cannot phone home because it was never built to.
Local-First Philosophy
TikTok Archive Viewer is part of a broader approach to software: tools that run on your machine, store data in formats you control, and require nothing from you after setup except the data you already have.