A tiny native macOS app that recreates the old drag-and-drop subtitle workflow:
- Drop a video onto the window.
- The app fingerprints it and searches OpenSubtitles in your chosen language.
- The best subtitle is downloaded as
Video filename.srtbesideVideo filename.mkv.
Multiple files can be dropped together. Existing .srt files are kept unless replacement is enabled in Settings.
The current OpenSubtitles REST API requires credentials that the older service did not:
- Create or use a free OpenSubtitles.com account.
- Create an API consumer/key from the API consumers page.
- Enter the username, password, API key, and preferred subtitle language in the app.
The password is stored in macOS Keychain. The API key, username, language, and replacement preference are stored in the app's local preferences.
The engine — hashing, OpenSubtitles search and download — is EasySubsKit,
a Swift package at the repo root (swift build && swift test). The drop app
is a thin UI over it, and Cargo uses
the same package to fetch subtitles after it organizes a file.
The checked-in Xcode project can be opened directly:
open EasySubs.xcodeprojOr regenerate it after editing project.yml:
xcodegen generateThe app targets macOS 14 or newer and has no third-party runtime dependencies.
The complete macOS icon set is drawn in code with AppKit/Core Graphics—there are no external design files or image-generation dependencies:
swift scripts/generate-icon.swiftThe script writes all required 1x and 2x PNG variants into the AppIcon.appiconset asset catalog. It renders the same captions.bubble.fill SF Symbol used in the EasySubs header so the app and Dock icon match exactly.
The app first computes the standard OpenSubtitles hash from the video's first and last 64 KiB plus its size. This generally identifies the exact release and timing. If no hash match exists, it falls back to the full video filename and chooses the most-downloaded result returned by OpenSubtitles.