A powerful Python tool to download Snapchat memories from your data export with full metadata preservation, parallel downloads, and overlay support.
- π₯ Parallel Downloads - Download multiple files simultaneously for faster processing
- π Progress Bar - Real-time progress with ETA and download speed (using tqdm)
- π Resume Support - Interrupt and restart without re-downloading existing files
- π Date Preservation - Preserves original creation dates in file metadata
- π GPS Coordinates - Embeds location data in EXIF metadata
- π¨ Overlay Merging - Optionally apply Snapchat filters/stickers to images and videos
- π¬ Video Metadata - Sets creation time and GPS using ffmpeg
- π Smart Naming - Files named with timestamps for easy chronological sorting
- π Logging - Detailed log file for tracking errors and progress
pip install -r requirements.txtOr manually:
pip install requests pillow piexif tqdmffmpeg is required for video metadata and overlay merging.
macOS:
brew install ffmpegWindows:
winget install ffmpegLinux:
sudo apt install ffmpeg# Basic download
python3 download_via_json.py memories_history.json
# Specify output folder
python3 download_via_json.py memories_history.json -o my_memories
# With 8 parallel downloads (faster)
python3 download_via_json.py memories_history.json -p 8
# With overlay merging (applies Snapchat filters/stickers)
python3 download_via_json.py memories_history.json --merge-overlay
# Full example
python3 download_via_json.py memories_history.json -o my_memories -p 4 --merge-overlayRun without arguments for interactive prompts:
python3 download_via_json.py| Option | Description |
|---|---|
json_file |
Path to the memories_history.json file |
-o, --output |
Output directory (default: downloads) |
-p, --parallel |
Number of parallel downloads (default: 4) |
-q, --quiet |
Quiet mode - reduced output |
--merge-overlay |
Merge overlay PNG onto images and videos |
--log |
Custom log file path (default: <output>/download.log) |
-h, --help |
Show help message |
- Open Snapchat β Profile β βοΈ Settings
- Go to Privacy Controls β My Data
- Click Submit Request
- Wait for email (usually 24-48 hours)
- Download and extract the ZIP file
- Find
json/memories_history.json
Loading JSON from: memories_history.json
Found 39993 media items to download
Estimated download size: 195.3 GB
Disk space: Disk space OK: 450.2 GB available
Starting download with 4 parallel workers...
Overlay merging: ENABLED
Log file: downloads/download.log
Downloading: 45%|ββββββββββββ | 18000/39993 [1:30:00<1:50:00, 3.33file/s]
β Statistics:
Downloaded: 18000 new files (85.2 GB)
Skipped: 0 existing files
Errors: 5 files failed
Total processed: 18000 of 39993
Time elapsed: 5400.0 seconds
Average speed: 15.78 MB/s
YYYYMMDD_HHMMSS_<index>.<extension>
Examples:
20240506_231811_1.jpg- Image from May 6, 2024 at 11:18:11 PM20240507_143245_2.mp4- Video from May 7, 2024 at 2:32:45 PM
| Type | File Timestamp | EXIF Date | GPS Location |
|---|---|---|---|
| Images (.jpg) | β | β | β |
| Videos (.mp4) | β | β (with ffmpeg) | β (with ffmpeg) |
Snapchat delivers some media as ZIP files containing:
-main.jpgor-main.mp4- The original media-overlay.png- Filters, stickers, text, etc.
- Extracts only the main image/video
- Faster processing
- No filters/stickers visible
- Composites the overlay onto the media
- Images: Quick (PIL compositing)
- Videos: Slower (requires ffmpeg re-encoding, use
-p 2) - Preserves your Snapchat creativity!
If you've already downloaded files and some videos are broken (saved as ZIP files), use these repair scripts:
# Dry run first
python3 repair_video_zips.py /path/to/downloads --dry-run
# Run repair
python3 repair_video_zips.py /path/to/downloads
# Faster with more workers
python3 repair_video_zips.py /path/to/downloads -p 8# Keep original for comparison
python3 repair_video_zips_with_overlay.py /path/to/downloads --keep-original
# Standard repair with overlay
python3 repair_video_zips_with_overlay.py /path/to/downloads| Script | Purpose | Speed |
|---|---|---|
repair_video_zips.py |
Extract videos without overlay | Fast |
repair_video_zips_with_overlay.py |
Extract + apply overlay | Slower (re-encodes) |
- Parallel Downloads: Use
-p 4to-p 8for downloads (network-bound) - Video Overlay: Use
-p 2when using--merge-overlay(CPU-bound) - Resume: If interrupted, just re-run - existing files are skipped
- Disk Space: Check available space before large downloads
- Download Quickly: Snapchat URLs expire - download soon after receiving export
- Check your JSON file has the
Media Download Urlfield - URLs may have expired - request a new export
- Download URLs have expired
- Request a new Snapchat data export
- Ensure ffmpeg is installed and in your PATH
- Run
ffmpeg -versionto verify
- Ensure
--merge-overlayflag is used - Check log file for specific errors
- Some overlays may be corrupted in the export
Snapchat_Memories_Export_Helper/
βββ download_via_json.py # Main downloader
βββ repair_video_zips.py # Repair script (no overlay)
βββ repair_video_zips_with_overlay.py # Repair script (with overlay)
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ downloads/ # Default output folder
βββ download.log # Log file
βββ 20240101_120000_1.jpg
βββ 20240102_153045_2.mp4
βββ ...
- Python 3.7+
- requests
- pillow
- piexif
- tqdm (optional, for progress bar)
- ffmpeg (optional, for video metadata and overlays)
Free to use and modify for personal use.
This tool is not affiliated with Snapchat. It helps users organize their own personal data exports. Use in accordance with Snapchat's Terms of Service.