Skip to content

Latest commit

Β 

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🚨 IMPORTANT NOTICE: PROJECT HAS MOVED 🚨

The newest version of this project has moved! All future development will take place in a new repository: All-In-One-Snapchat-Downloader.

There will be no more active development on this current repository. Users looking to download their Snapchat data should head over to the new Releases Page and download V.10.

πŸŽ₯ Check out the new YouTube video tutorial explaining how to use the new program and what data to select from Snapchat so you can process your Memories and Chat Media all in one go.


Snapchat Memories & Chat Media Download GUI (DEPRECATED)

A user-friendly desktop application (Windows, macOS, and Linux) to download and preserve your Snapchat memories with their original metadata, including exact dates and location information.

Application Interface

πŸš€ Quick Start

Download the official release executable β€” The easiest way to use this tool:

πŸŽ₯ YouTube Video Tutorial

  1. Get the .exe from the latest release.
  2. Install recommended tools (optional but highly recommended):
  3. Request your Snapchat data (see instructions below).
  4. Run the app and select your memories_history.json file.

Note: Do not download the repository ZIP. Use the pre-built .exe from the Releases page for the best experience.

πŸ“‹ Overview

This tool downloads all your Snapchat memories using the memories_history.json file from your Snapchat data export. It preserves metadata like creation dates, timestamps, and GPS coordinates by embedding them directly into your downloaded media files. It also automatically merges overlay captions and stickers back onto your photos and videos when present.

Application Interface

✨ Features

  • Simple GUI β€” No command line needed; just point and click.
  • Bulk Download β€” Download all your memories at once with built-in retry logic.
  • Resume Downloads β€” Skip already downloaded files to resume interrupted sessions.
  • Overlay Merging β€” Automatically merges caption/sticker overlays back onto photos and videos.
  • Metadata Preservation β€” Embeds original dates and GPS coordinates into EXIF data (images) and file metadata (videos).
  • Video Conversion β€” Automatic H.264 conversion for better Windows compatibility (requires VLC).
  • File Timestamps β€” Sets file modification dates to match memory creation dates.
  • Progress Tracking β€” Real-time progress updates and detailed logging.
  • Stop/Resume β€” Pause and resume downloads at any time.
  • Process Local Files β€” Apply metadata to already-downloaded memories when the Snapchat export does not include download URLs.
  • Process Chat Media β€” Merge captions and fix dates/timestamps for the chat_media/ folder in your export, matching senders and exact times from your chat history.

πŸš€ Getting Started

Using the Executable (Recommended)

  1. Download the latest .exe from the Releases page.
  2. Install optional tools for best results:
    • VLC Media Player (download) β€” enables video conversion to H.264.
    • FFmpeg (download) β€” enhances video overlay merging.
  3. RESTART YOUR COMPUTER AFTER INSTALLING VLC AND FFMPEG.
  4. Run the application β€” Double-click the .exe file (click 'Run anyway' if you get a Windows security warning).
  5. Follow the usage instructions below.

    Note: If you keep getting the "no download URL found, skipping" message, please refer to the Local Processing Guide. It takes some setup but is the most reliable workaround if the memories_history.json download method fails.

πŸ“₯ How to Get Your Snapchat Data

Note: Snapchat exports expire after 7 days. It is advised to act quickly when you get access to your full export. If you encounter errors, it is best to request a new batch and reprocess that.

  1. Open Snapchat on your mobile device.

  2. Tap your profile icon (top-left) β†’ βš™οΈ Settings (top-right).

  3. Scroll down to Privacy Controls β†’ Tap My Data.

  4. Select data to export β€” Check the boxes for the memories you want:

    Options to Select

  5. Choose a date range for your memories:

    Date Range Selection

  6. Tap Submit Request:

    Download Export Button

  7. Wait 24-48 hours for Snapchat to prepare your data.

  8. Download the ZIP when you receive the confirmation email from Snapchat.

Note: If you have multiple ZIP files available for download, only the first (non-numbered) folder contains the memories_history.json file. This single JSON file contains all memories from the request, even though it is only located in the first folder.

  1. Extract the ZIP (right-click β†’ "Extract All..." on Windows):

    Unzipped Folder

  2. Locate memories_history.json in the extracted folder (usually in the root or json subfolder).

πŸ“– How to Use

  1. Launch the Application

    Application Main Screen

  2. Select JSON File

    • Click "Browse..." next to "JSON File".
    • Select your memories_history.json file.
  3. Choose Output Directory

    • Click "Browse..." next to "Output Directory".
    • Select where you want to save your memories (default: downloads folder).

    Select Output Directory Application with Paths Selected

  4. Configure Options (Optional)

    Resume Options:

    • Skip existing files (resume mode) β€” Enable this to avoid re-downloading files that already exist.
      • Useful when resuming after an interruption or adding new memories.
      • Validates existing files and only downloads what's missing.
      • Checks for multiple filename patterns (merged overlays, collision-resolved files).
    • Re-convert existing videos to H.264 if needed β€” Only appears when resume mode is enabled.
      • Checks the codec of existing videos and re-converts non-H.264 videos.
      • Ensures all videos are compatible with Windows Media Player and other standard tools.
      • Skips videos already in H.264 format to save time.

    Timezone Handling:

    • Use GPS coordinates to determine local timezone β€” Recommended, enabled by default.
      • Automatically detects your local timezone from the photo/video GPS location.
      • Files are named and timestamped with local time for easier organization.
      • Falls back to the system timezone when GPS data is unavailable or the checkbox is disabled.
  5. Start Download

    • Click "Start Download".
    • Monitor progress in the log window.
    • Click "Stop" to pause if needed.

    Download in Progress

  6. Access Your Memories

    • Files are saved in your chosen output directory.
    • Named by creation date: YYYYMMDD_HHMMSS.jpg or YYYYMMDD_HHMMSS.mp4.
    • Overlays are automatically merged when detected.

πŸ“‚ Processing Local Files (No Download URLs)

Some Snapchat data exports do not include download URLs in memories_history.json (the Media Download Url field is empty for every entry). This has been confirmed across multiple accounts and does not appear to be a one-off issue. If this happens to you, the standard download mode will skip all files because the URLs simply are not there.

The only option in this case is to download the media files manually from your Snapchat account before your export links expire. This is tedious since Snapchat splits large libraries across many export ZIPs (sometimes 50+ files) that must each be downloaded and extracted one by one.

Once you have the files, Snapchat still includes the actual media inside the memories/ subfolder of each export ZIP, meaning the metadata (dates, GPS coordinates, overlay merging) can still be applied. This mode does exactly that.

How to use

  1. Download and extract your Snapchat export ZIP(s)

    Right-click each ZIP β†’ "Extract All..." to unzip it. If you have multiple export ZIPs, extract them all into one parent folder so the structure looks like this:

    snapchat/
    β”œβ”€β”€ mydata~AAA123/
    β”‚   └── memories/
    β”œβ”€β”€ mydata~BBB456/
    β”‚   └── memories/
    └── mydata~CCC789/
        └── memories/
    
    
    

Inside each extracted folder, you will find a memories/ subfolder containing your media files:

  1. At the top of the app, switch the Mode to Process Local Files.
  2. JSON File β€” Select your memories_history.json as usual.
  3. Memories Folder β€” Select one of the following:
  • The memories/ folder from a single export (e.g., mydata~XXX/memories/).
  • The parent export folder (e.g., mydata~XXX/) β€” the app will find the memories/ folder automatically.
  • A folder containing multiple exports (e.g., snapchat/) β€” the app will discover all mydata~*/memories/ subfolders and process them in bulk.
  1. Output Directory β€” Choose where to save the processed files.
  2. Click Process Local Files.

The app matches each local file to its JSON entry using the file's modification timestamp, which Snapchat preserves in the export. Correct dates, GPS coordinates, and timezone information are then embedded into each output file.

Note: If you have multiple export ZIPs, place all extracted folders inside one parent directory and point the app at that parent. It will process all of them in a single run.

πŸ’¬ Processing Chat Media (Merge Captions + Fix Metadata)

Snapchat exports can also include a chat_media/ folder, which contains every photo and video saved in your chats (direct sends, saved snaps, and camera-roll shares). These files come with scrambled names, no usable timestamps, and captions stored as separate transparent overlay images.

This mode reassembles them: captions are merged back onto their photos/videos, and correct dates, times, and file timestamps are written to every file.

Requesting the right export from Snapchat

When requesting your data at accounts.snapchat.com β†’ My Data, enable these toggles under "Select data to include":

  • Export JSON Files β€” Required for exact timestamps and sender matching.
  • Chat History β€” Contains the message records your media files are matched against.
  • Export Chat Media β€” The actual photos/videos from your chats.
  • Export Shared Stories β€” Recommended; catches media shared via stories.

Then, choose your date range and download/extract the export ZIP as usual. The extracted folder should contain both chat_media/ and json/ side by side:

mydata~XXX/
β”œβ”€β”€ chat_media/       ← the media files
β”œβ”€β”€ json/
β”‚   β”œβ”€β”€ chat_history.json    ← used for exact timestamps + senders
β”‚   └── snap_history.json
└── html/

How to use

  1. At the top of the app, switch the Mode to Process Chat Media.
  2. Chat Media Folder β€” Select the chat_media/ folder from your extracted export (selecting the export folder itself also works). The app will confirm how many files it found and whether it detected your chat history JSON.
  3. Output Directory β€” Choose where to save the processed files.
  4. Pick an overlay mode: merged captions only, originals only, or both.
  5. Click Process Chat Media.

What the app does

  • Exact timestamps β€” Files are matched to your chat_history.json / snap_history.json records (typically a 98%+ match rate). It falls back to the video's embedded creation time, then the send time Snapchat stores in the export's file modification times, and finally the filename date at noon local time.
  • Sender info β€” The log shows who sent each file and in which conversation.
  • Caption merging β€” media~ and overlay~ files from the same snap are paired and merged. When several snaps share a date, the app verifies pairings against the export's thumbnails. Captions that can't be confidently paired are never merged onto the wrong photoβ€”they're preserved in an unmatched_overlays/ folder instead.
  • Metadata fixing β€” EXIF dates (images), embedded creation dates (videos), and file created/modified timestamps are all set to the real capture time so files sort correctly in your photo library.
  • Output files are named by capture time: YYYYMMDD_HHMMSS_<n>.jpg / .mp4.

Notes:

  • Chat media contains no GPS data (unlike memories), so timestamps use your system timezone and no location is embedded.
  • Thumbnails and metadata sidecar files from the export are consumed during processing but not copied to the output (they contain no unique media).
  • A few files in some exports are stored in an unreadable (likely encrypted) format; these are listed in the log and skipped.
  • If the json/ folder is missing, the mode still worksβ€”it just falls back to embedded video timestamps and filename dates.

πŸ”§ Technical Details

Supported Media Types

  • Images β€” JPEG/JPG with EXIF metadata.
  • Videos β€” MP4 with embedded metadata.

Metadata Features

  • Timezone-aware timestamps β€” Uses GPS coordinates to determine the correct local time (falls back to system timezone).
  • Creation date/time preservation β€” Embedded in EXIF (images) and file metadata (videos).
  • GPS coordinates β€” Embedded when available in the original memory.
  • Timezone offset tags β€” EXIF 2.31 standard offset fields for proper timezone display.
  • File modification timestamps β€” Match local creation time for correct sorting in file managers.
  • Automatic overlay/caption merging β€” Combines -main and -overlay file pairs seamlessly.

Dependencies

Core libraries:

  • requests β€” Network downloads
  • Pillow β€” Image processing
  • piexif β€” EXIF metadata (optional but recommended)
  • mutagen β€” Video metadata (optional but recommended)
  • av (PyAV) β€” Video processing (optional)
  • python-vlc β€” VLC integration (optional)
  • timezonefinder β€” GPS-based timezone detection (optional but recommended)
  • pytz β€” Timezone handling (optional but recommended)

Note: The application gracefully handles missing optional packages. If timezone libraries aren't installed, timestamps default to UTC. If EXIF/video metadata libraries are missing, files are still downloaded but without embedded metadata.

REQUIRED Tools

  • VLC Media Player β€” Automatic video conversion to H.264 (highly recommended).
  • FFmpeg β€” Enhanced video overlay processing.

🍎🐧 Running on macOS and Linux (ALPHA - NEEDS TESTERS)

The app runs on macOS and Linux as well as Windows. Grab the platform build from the Releases page if one is published, or run from source (see below).

macOS notes:

  • If you use the pre-built .app, macOS Gatekeeper will warn about an unsigned app the first time. Right-click the app β†’ Open β†’ Open to run it.
  • If running from source, use Python from python.org or Homebrew (brew install python-tk). The Tk that ships with the old system Python is buggy.
  • Install VLC and/or FFmpeg (brew install ffmpeg) for video conversion and overlay merging.

Linux notes:

  • Tkinter is not bundled with most distro Pythons. Install it first:

  • Debian/Ubuntu: sudo apt install python3-tk

  • Fedora: sudo dnf install python3-tkinter

  • Arch: sudo pacman -S tk

  • Install VLC and FFmpeg from your package manager (e.g., sudo apt install vlc ffmpeg) for video conversion and overlay merging.

βš™οΈ Building from Source

To compile the executable yourself:

# Install PyInstaller
pip install pyinstaller

# Windows
build_exe.bat

# macOS / Linux
sh build_mac_linux.sh

The output is created in the dist folder: SnapchatMemoriesDownloader.exe on Windows, SnapchatMemoriesDownloader.app on macOS, and a SnapchatMemoriesDownloader binary on Linux. The build is driven by SnapchatMemoriesDownloader.spec, which includes the necessary hidden imports for all dependencies. PyInstaller does not cross-compileβ€”you must build on the OS you are targeting. The GitHub Actions workflow in .github/workflows/build.yml builds all three automatically on version tags.

Running from Source

For developers or advanced users:

# Clone the repository
git clone [https://github.com/ethanwheatthin/Snapchat_Memories_Downloader_GUI.git](https://github.com/ethanwheatthin/Snapchat_Memories_Downloader_GUI.git)
cd Snapchat_Memories_Downloader_GUI

# Install dependencies
pip install -r requirements.txt

# Run the application
python download_snapchat_memories_gui.py

πŸ§ͺ Testing

The project includes comprehensive unit tests to ensure reliability:

# Install pytest
pip install pytest

# Run all tests
python -m pytest tests/ -v

# Run specific test file
python -m pytest tests/test_filename_sanitization.py -v

# Run with detailed output
python -m pytest tests/ -v --tb=short

Test Coverage:

  • Filename sanitation β€” Ensures no trailing braces or invalid characters in filenames.
  • Atomic conversion β€” Verifies temp file β†’ validate β†’ atomic replace workflow.
  • Video validation β€” Tests ffprobe-based validation (when available).
  • Return contracts β€” Confirms consistent return types across modules.

For debugging issues, see DEBUGGING.md for detailed troubleshooting steps, ffprobe commands, and log inspection guidance.

πŸ“ Important Notes

  • Storage Space β€” Ensure sufficient disk space for all memories.
  • URL Expiration β€” Download links expire over time; process your data export promptly.
  • Privacy β€” All processing happens locally on your computer; no data is sent elsewhere.
  • Cross-Platform β€” Runs on Windows, macOS, and Linux (see the macOS/Linux section above for setup notes).

πŸ’‘ Tips

  • Use Resume Mode β€” Enable "Skip existing files" when resuming interrupted downloads.
  • Re-convert as needed β€” Use the re-conversion option if you have old HEVC videos that won't play properly.
  • Download regularly to avoid URL expiration.
  • Organize downloads by creating subfolders by year/month.
  • Verify metadata by checking a few files after the initial download.
  • Keep your JSON β€” Save a backup copy of memories_history.json.

🀝 Contributing

Contributions welcome! Feel free to:

  • Report bugs via GitHub Issues.
  • Suggest features.
  • Submit pull requests.

βš–οΈ License

This project is provided as-is for personal use. Use responsibly and in accordance with Snapchat's Terms of Service.

⚠️ Disclaimer

This tool is not affiliated with, endorsed by, or connected to Snap Inc. or Snapchat. It is an independent utility designed to help users download their own personal data from Snapchat's official data export feature.

Enjoy preserving your Snapchat memories! πŸ“ΈπŸŽ₯

About

Download your complete Snapchat Memories and chat media with original timestamps, overlays, and captions intact

Topics

Resources

Stars

135 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages