↓ Skip to main content
  1. Posts/

Videostack

Table of Contents

A fast, native library and player for your video collection — search what was said, and jump straight to that moment.

Videostack App Icon
macOS 27+ Version 1.0.0 • 23.1 MB • Apple Silicon

By downloading, you accept that Videostack is provided “as is” without warranty (see disclaimer).

Videostack is a native macOS app for the videos that collect on your disk: cooking lessons, lectures, talks, music performances, and downloaded YouTube clips. Point it at a folder and it builds a browsable library with thumbnails, indexes the subtitles so you can search what was said, and plays every format in its own player — opening a search result at the exact second the words were spoken. Your videos stay where they are; nothing leaves your Mac.

Highlights at a Glance
#

Search What Was Said

Subtitles next to your videos are indexed with SQLite FTS5. Results show the matching lines with timestamps and update as you type.

Plays Every Format

A built-in player powered by libVLC handles mp4, mov, webm, mkv, avi and more, with frame previews while scrubbing, playback speed, and full screen.

YouTube, Kept Locally

Paste a link to save a video with its English subtitles via yt-dlp, and fill in channel, description, and upload date for clips you already have.

Pick Up Where You Left Off

Playback position is saved automatically, so half-watched videos appear in Continue Watching. Bookmark any moment and jump back with a double-click.

Organized by Folder & Tag

Each video is tagged with the folder it lives in. Add your own tags, drag videos onto them, and filter by title, file name, or category.

Local, No Accounts

No sign-up, no cloud library, no tracking. The index lives in a single database on your Mac, and your videos are read in place, never copied or uploaded.

Why Videostack?
#

Saved videos pile up in folders by topic, and Finder only shows file names. Finding the clip where the chef explained the folding technique or the lecture where that theorem came up means opening videos one by one and scrubbing through them.

The usual alternatives each miss something:

  • Finder & QuickLook: Find a file by name, but know nothing about what’s inside — and QuickTime won’t open webm or mkv.
  • Media Servers: Built for streaming movies to a TV. They want a server, a scanner that renames things, and an account.
  • YouTube Watch Later: Only works while the video is still online, and searches titles rather than what was said.

Videostack was built to be ⌘F for your video collection: one search box across every word in every subtitle, a grid you can browse at a glance, and a player that starts at the moment you were looking for.


How It Works
#

1. Add Videos
#

Choose File ▸ Scan Videos Folder to index the folder set in Settings, or click + to add any folder or files. For each video, Videostack reads its duration, renders a thumbnail, indexes any subtitle file next to it (video.srt or video.en.srt), and tags it with the folder it sits in, so videos/cooking/… lands in cooking. Titles are cleaned up from yt-dlp-style file names.

Your videos are never copied or modified. Removing a video from the library deletes only its index entry; the file itself stays where it is.

2. Search#

The search field at the top does two things at once:

  • Free text searches the subtitles (and fetched YouTube descriptions) of every video, with search-as-you-type prefix matching.
  • Scoped filters narrow the library by metadata: title:, filename: (or file:), and category: (or folder:). Quote values with spaces, e.g. title:"sourdough starter".

Combine them freely, for example lamination category:baking. Double-click a result to start playing at that line.

3. Watch
#

The player keeps its controls out of the way until you move the mouse. Press Space to play or pause, ←/→ to skip 10 seconds, and F for full screen. Drag the scrubber to see frame previews, change the playback speed, or bookmark the current moment with an optional label. Open player windows are restored the next time you launch.

4. Bring In YouTube Videos
#

With yt-dlp installed (brew install yt-dlp ffmpeg), File ▸ Download from YouTube… saves a video into a category subfolder of your Videos Folder together with its English subtitles, then indexes it right away. If the video is already in your library, Videostack takes you to it instead of downloading a second copy. File ▸ Fetch YouTube Metadata adds the channel, description, and upload date to videos whose file names carry a YouTube id.


Search Syntax
#

Full-text search uses SQLite FTS5 and supports:

  • All words: fold butter finds passages containing both words.
  • Boolean operators: bread AND rye NOT sourdough, and OR for alternatives.
  • Prefixes: ferment* matches ferment, fermentation, fermented… Bare words get a * automatically, for search-as-you-type.
  • Exact phrases: "autolyse the dough" matches the words in that order.

Security & Distribution
#

Signed, Notarized, Verified Updates: Every release is checked by Apple before you download it, and every update is checked by Videostack before it installs.
  • Gatekeeper & Notarization: Distributed as a Developer ID–signed, notarized, and stapled disk image (Videostack.dmg), built with the hardened runtime.
  • Signed Updates: Updates are delivered with Sparkle over HTTPS. Each update carries an EdDSA signature that the installed app verifies against a public key built into it; an update that fails verification is refused.
  • Reads Videos Where They Live: Videostack indexes files in place rather than copying them into a container, and runs yt-dlp from your Homebrew installation when you ask it to, so it runs outside the App Sandbox. It only reads the files and folders you add, and it never modifies them.

Privacy: Your Library Stays on Your Mac
#

Your Data Stays Yours: Videostack does not collect, track, or share any personal information, usage metrics, or telemetry.
  • Zero Analytics or Telemetry: There are no analytics libraries, tracking pixels, crash reporters, or third-party telemetry SDKs inside Videostack.
  • No Accounts: You never create an account, enter an email, or register with any service.
  • Strictly Local Index: The search index, tags, bookmarks, watch positions, and thumbnails live in ~/Library/Application Support/Videostack/ on your Mac. Your videos and their subtitles are never uploaded anywhere.
  • Spotlight Stays On-Device: Titles, channels, and tags are added to the macOS Spotlight index, which is local to your Mac.
  • Network Requests, Only These:
    • YouTube (only when you ask): Downloading a video or fetching metadata runs yt-dlp, which contacts YouTube for that video. If yt-dlp isn’t installed, metadata falls back to YouTube’s public oEmbed endpoint, which receives only the video’s URL. Nothing about your library is sent.
    • Update check: About once a day, Videostack downloads a small update feed from sagenhaft.space. The request identifies the app version so a newer release can be offered; Sparkle’s optional system-profile reporting is turned off, so no hardware or usage details are sent.

Technology Stack
#

  • Language & Toolchain: Swift 6.4 (strict concurrency, actor isolation), Xcode 27
  • User Interface: SwiftUI and AppKit
  • Playback & Thumbnails: libVLC via SwiftVLC
  • Search & Storage: SQLite FTS5 (BM25 ranking), via the system SQLite library
  • System Integration: Core Spotlight
  • YouTube (optional): yt-dlp and ffmpeg, installed separately
  • Updates: Sparkle 2
  • Target: macOS 27+ (Apple Silicon)

Third-Party Software & Licensing
#

Videostack integrates and relies on several open-source projects:

libVLC & VideoLAN (LGPL v2.1)
#

Videostack uses libVLC (via SwiftVLC) for media decoding, video playback, and thumbnail extraction.

  • License: libVLC is copyright © VideoLAN and its contributors. It is free software distributed under the terms of the GNU Lesser General Public License (LGPL) v2.1 (or later).
  • Source Code: You can obtain the complete, unmodified source code for libVLC directly from VideoLAN’s repository at code.videolan.org/videolan/vlc or via their source archives.
  • Dynamic Linking & Relinking: In compliance with the LGPL v2.1, libVLC is dynamically linked as an embedded framework (VLCKit.framework / libvlc.dylib). Users may inspect, modify, or replace the libVLC binaries within the application bundle.
  • Trademark: VLC and VideoLAN are registered trademarks of the VideoLAN non-profit organization. Videostack is an independent software project and is not affiliated with, endorsed by, or sponsored by VideoLAN.

yt-dlp & FFmpeg Integration
#

Videostack provides an optional helper to save videos and subtitles into your local library.

  • External Installation: Videostack does not bundle, package, or distribute yt-dlp or FFmpeg. It is designed to invoke the user’s independently installed binaries (e.g., installed via brew install yt-dlp ffmpeg).
  • License: yt-dlp is released under The Unlicense (public domain software). FFmpeg is licensed under the LGPL v2.1+ / GPL v2+.
  • Compliance & Copyright: Videostack does not host, mirror, or redistribute third-party video content. Users are solely responsible for complying with applicable copyright laws, fair use provisions, and the terms of service of any third-party website or platform they choose to download from.
  • Non-Affiliation: Videostack is independent and has no official relationship, sponsorship, or affiliation with yt-dlp, YouTube, or Google LLC.

Download & Installation
#

Videostack for macOS

macOS 27+ • Apple Silicon • Signed & Notarized

SHA-256: fbe8b42643db6fee97ccb112c316f7296c7b7891977dac243b7f8395c4fc36a4

By downloading, installing, or running Videostack, you acknowledge and agree to the disclaimer and limitation of liability below.

To install, mount Videostack.dmg and drag Videostack to your /Applications folder. On first launch, choose your Videos Folder in Videostack ▸ Settings… (it defaults to ~/Movies), then File ▸ Scan Videos Folder. For YouTube downloads, install yt-dlp and ffmpeg with brew install yt-dlp ffmpeg. Videostack checks for updates automatically; you can also choose Videostack ▸ Check for Updates… at any time.

Disclaimer & Limitation of Liability

By downloading, installing, or using Videostack, you expressly agree that this software is provided free of charge on an “as is” and “as available” basis, without warranty, representation, or guarantee of any kind, whether express, implied, statutory, or otherwise, including but not limited to any warranties of merchantability, fitness for a particular purpose, non-infringement, quiet enjoyment, data accuracy, or error-free operation.

You are solely responsible for the content you download and for complying with the terms of service of any site you download from, as well as applicable copyright law. Videostack does not include yt-dlp; it runs your own installation when you ask it to.

The author and contributors shall not be held liable for any direct, indirect, incidental, special, consequential, exemplary, or punitive damages, or for any loss of data, incomplete or inaccurate search results, incorrect metadata or tags, corrupted libraries, hardware issues, or other claims arising out of or in connection with the software, its download, installation, performance, or use. You download, install, and use this software entirely at your own risk.