If this helped you, consider starring the repo ⭐
🚫 No watermark · 📺 ORIGINAL QUALITY · 💾 Smart link cache · 📁 Neat filenames
|
Ez-TikTok-Downloader is a small, no-nonsense tool that:
| Feature | Description |
|---|---|
| 🌐 ORIGINAL QUALITY | Uses tikWM api so it downloads original quality videos. |
| ✨ PRIVATE VIDEOS | Add your cookie sessionID and you are good to go. |
| 🚫 No watermark | Saves the video without the TikTok logo overlay. |
| 📁 Organized by creator | Everything goes into folders by username (and story/highlight subfolders when applicable). |
| 📅 Smart filenames | Username - Date(YY-mm-dd) - ProfileUniqueID - idPost — archivist-friendly and sortable. |
| 💾 Link cache | Once a download link is fetched, it’s saved. If the app crashes, you don’t re-fetch 50 links. |
| 📄 Batch from .txt | Paste many URLs in a text file and point the script at it. |
You run it, paste a TikTok link (or a path to a .txt full of links), and it downloads. That’s it.
flowchart LR
A[📋 URL or .txt] --> B{Cache?}
B -->|Yes| C[⬇️ Download]
B -->|No| D[🌐 TikWM API]
D --> E[💾 Save to cache]
E --> C
C --> F[📁 profiles/username/]
- Videos → One folder per username, filenames like:
Username - YY-mm-dd - ProfileUniqueID - VideoID.mp4 - Stories → Same username folder, inside a
storysubfolder. - Highlights → Same username folder, inside a
highlightsubfolder.
All without watermark, with a local cache so re-runs (or crashes) don’t waste time re-extracting links.
- Option A: Download the project as a ZIP from GitHub, then extract it to a folder (e.g.
C:\Users\You\Ez-TikTok-Downloader). - Option B: If you use Git, clone the repo into that folder.
You should see at least:
| File | What it does |
|---|---|
tt.py |
Main script |
requirements.txt |
Python dependencies |
dependencies.bat |
One-time setup (Python + packages) |
run.bat |
Launch the downloader |
- Open File Explorer and go to the folder where you extracted the project.
- Double‑click
dependencies.bat. - A black window (Command Prompt) will open and:
- Look for Python. If it’s missing, it will try to install it via winget (Windows Package Manager).
- If Python was just installed, it will ask you to close the window, open a new one, go back to the same folder, and run
dependencies.batagain. - If Python is already there, it will upgrade pip and install the required Python packages from
requirements.txt.
- When you see something like “Setup complete”, you’re done. You can close the window.
💡 If you don’t have Python and winget doesn’t work
The script will tell you to install Python manually from python.org. During setup, check “Add Python to PATH”, then rundependencies.batagain from a new Command Prompt.
- To run the downloader, double‑click
run.bat(or open a Command Prompt in that folder and type:python tt.py).
🎉 Setup complete! → Double‑click run.bat → Paste URL → Done!
- Run
run.bat(orpython tt.py). - When it asks: “Enter a TikTok video URL or path to a .txt file with URLs:”
- Paste a link, for example:
https://www.tiktok.com/@creator/video/7123456789012345678 - Press Enter.
The video will be downloaded into the current folder.
- Create a text file (e.g.
my_links.txt). - Put one TikTok URL per line. Save the file.
- Run
run.bat(orpython tt.py). - When prompted, type the full path to your file, e.g.:
C:\Users\You\Desktop\my_links.txt - Press Enter.
The script will process each link (with a short delay between them to be nice to the server).
You can skip the prompt and pass the URL or file path directly:
python tt.py "https://www.tiktok.com/@creator/video/7123456789012345678"python tt.py "C:\path\to\urls.txt"To download private or friends-only videos, you can give the script your TikTok session ID (a cookie that proves you’re logged in). TikWM uses it to access content your account can see.
-
Log in to TikTok in your browser (e.g. tiktok.com).
-
Open your browser’s developer tools (often F12), then go to Application (Chrome) or Storage (Firefox) → Cookies →
https://www.tiktok.com. -
Find the cookie named
sessionidand copy its Value (a long string of letters and numbers). -
In the same folder as
tt.py, create a file namedsessionid.txt. -
Paste only the session ID value into that file (one line, no spaces). Save and close.
You can paste either:
- Just the value:
5b1e4c753e7ftest00d85856eb0d67 - Or the full form:
sessionid=5b1e4c75test56eb0d67
Both work.
- Just the value:
-
Run the script as usual. If it finds
sessionid.txt, it will print “Using session ID from sessionid.txt (private videos supported).” and use that cookie when asking TikWM for links.
To stop using your session, delete sessionid.txt or clear its contents.
⚠️ Keep your session ID secret. Don’t share the file or commit it to Git. Anyone with it can act as your account. Addsessionid.txtto.gitignoreif you use version control.
Everything is saved in a profiles folder inside the directory where you ran the script (usually the same folder as tt.py).
### Filename format
Each file follows this pattern:
```text
Username - Date(YY-mm-dd) - ProfileUniqueID - idPost
| Part | Meaning |
|---|---|
| Username | TikTok @username (handle). |
| Date (YY-mm-dd) | Post date when we know it (e.g. 25-03-11 = 2025‑03‑11). |
| ProfileUniqueID | TikTok’s internal numeric user ID (or unknown if not available). |
| idPost | The video/post ID. |
Example:
example_creator - 25-06-15 - 6789012345678901234 - 7123456789012345678.mp4
Slideshows (image posts) get the same base name plus _img_1, _img_2, etc. (e.g. .jpg).
To get the real download link, the script talks to an external API. That can take a few seconds per video. If you have 50 links and the program crashes at 30, you don’t want to start from zero.
So:
| Step | What happens |
|---|---|
| 1️⃣ | First time → Script calls TikWM API, gets the link, saves it to link_cache.json, then downloads. |
| 2️⃣ | Next time (or after a crash) → Script checks the cache; if the video is there, it skips the API and downloads from the cached link. |
| 3️⃣ | You’ll see [Cache] Using cached link for … when a cached link is used. |
So: first run = extract + download. After a crash or a new run = cached links are reused, no re-extraction. Links are treated as non-expiring for this purpose.
🔄 Crash at video 30? → Run again → Videos 1–30 from cache ⚡ → Only 31–50 call the API
| Problem | What to try |
|---|---|
| “Python not found” | Run dependencies.bat again. If it installed Python, close the window, open a new Command Prompt, go back to the project folder, run dependencies.bat once more. |
| “No module named 'requests'” | Open a Command Prompt in the project folder and run: pip install -r requirements.txt |
| “Extraction failed” | The link might be invalid, private, or the service might be busy. Try again later or with another link. |
| “File not found” (when using a .txt) | Type the full path to the file (e.g. C:\Users\You\Desktop\urls.txt). |
| Videos not playing | Make sure you’re not opening the file while it’s still being written. Wait for “Downloaded: …” to appear. |
Q: Do I need a TikTok account?
A: No. Public links are enough.
Q: Can I download private videos?
A: Yes, if you add your TikTok session ID to sessionid.txt (see Private videos (session ID)). Otherwise only public links work.
Q: Where is the cache file?
A: link_cache.json in the same folder where you run tt.py (usually the project folder). You can delete it to start with a fresh cache.
Q: Can I change the download folder?
A: Run the script from the folder where you want the profiles folder to appear (e.g. cd C:\Videos, then python path\to\tt.py). Downloads will go to profiles/ inside that directory. The cache file (link_cache.json) is created in the same directory where you run the script.
Q: Is this against TikTok’s rules?
A: Use it for content you’re allowed to download (e.g. your own, or where you have permission). The authors are not responsible for misuse.
- TikWM — This project uses TikWM’s API to fetch no-watermark download links. Thanks to them for providing the service.
If you found it useful, a ⭐ on GitHub is always appreciated.
🎬 Ez-TikTok-Downloader · No watermark · Cache · Session ID · Profiles folder