TestFlight beta · macOS 15+ · housebroken enough for daylight

Your media,
all at once, looking suspiciously expensive.

flexGrid is a native macOS multi-video grid player for people with folders full of loops, references, outtakes, scans, and beautiful nonsense. Drop one in, hit play, and the whole pile becomes a living wall you can shuffle, lock, filter, and perform with.

No accounts· Zero telemetry· Keyboard-first· One-time upgrades
flexGrid · Live preview
16 cells · SmartShuffle active
Seen 83 / 247
Space Play / pause
R Shuffle
+ + L SmartLoad
+ Previous page
+ Next page
P Pick tile
+ + I Paneless mode
+ + K Kiosk mode
+ 1–9 Recall scene
+ + L Broadcast overlay
Esc Exit fullscreen
Space Play / pause
R Shuffle
+ + L SmartLoad
+ Previous page
+ Next page
P Pick tile
+ + I Paneless mode
+ + K Kiosk mode
+ 1–9 Recall scene
+ + L Broadcast overlay
Esc Exit fullscreen
Native macOS
SwiftUI, AVFoundation, Metal. Not Electron. Not a browser in a trench coat.
Private by default
No accounts, no analytics, no creepy backend whispering about engagement.
Adaptive
Reads memory pressure and behaves accordingly. You do not need to become the app's life coach.
Gapless
AVPlayerLooper under every video cell. Loop seams so clean they feel vaguely dishonest.

Features

One app. Several forms of tasteful trouble.

A photographer, a VJ, a streamer, and an archivist with a folder problem can all use the same app. They just press different parts of it.

Free

Drop a folder. The grid starts playing.

Drop any folder onto the window and every clip starts playing — one tile, four tiles, up to nine on Free. No import wizard, no project file, no onboarding mascot asking how you feel about creativity. The first batch plays before the rest of the folder is even finished scanning.

Free

Seamless loops, under every cell

Most video players stitch a loop by seeking to the beginning, which produces a tiny black flash and an audio click at the seam. flexGrid uses AVPlayerLooper under every cell. The seam is gone — you literally cannot see it happen.

Free

Fullscreen that doesn't make you wait

Click any tile and the fullscreen overlay borrows the player that was already running in the cell. No rebuffer, no poster frame, no spinner. Click back and the cell never lost its place. Configurable dim, blur, optional background pause, session-persistent volume, three ways out (collapse, click, ESC).

Free

Background audio, your way

Separate audio track for the room — MP3, M4A, WAV, FLAC, AIFF, AAC — or one toggle to unmute every video at once (off by default; the cacophony warning is real). Plays even when the app is in the background. Volume persists across sessions.

Free

Liquid Glass, where you have it

Dynamic backgrounds with accent-color palettes on macOS 26. On macOS 15 (Sequoia), the same panels gracefully fall back to a calmer treatment that still looks like care. No Electron. No web wrapper. Same app from one source.

Free

Siri & Shortcuts integration

Nine App Intents cover shuffle, playback, grid size, blackout, freeze, lava lamp, and presentation. Chain flexGrid with the rest of your Mac in Shortcuts.app, or just ask Siri. The little smart-apartment dream we were promised in 1997 — turns out it shipped, quietly.

Free

A startup greeting that knows what time it is

Time-aware greeting at launch, with a small rotating roster of sub-greetings that nudge without being chirpy. We didn't have to do this. We did it anyway.

Plus

Bigger grids, more room to breathe

Plus unlocks twelve- and sixteen-tile grids (up to 4×4) and lifts the scanning limit entirely. A folder of two photos still works. A folder of fifty thousand also works.

Plus

SmartShuffle

Treats your library like a very competent card dealer. Every item gets dealt before any repeat, and the deck stays balanced across eight dimensions at once — folder source, aspect ratio, duration, file type, codec, frame rate, audio presence, and a rolling sense of what just played. The result is a shuffle that feels hand-curated because the math is doing the curating.

Plus

Smart Layout Presets

Three content-aware layout buttons. flexGrid reads your media's aspect ratios — portrait, landscape, mixed — and recommends Portrait Gallery, Landscape Theater, or Uniform Stack. Click the one that fits the room you're in.

Plus

Aspect Match

Cells prefer matching aspect ratios when filling, in two strengths — Preferred (suggests; can mix) or Strict (only ever a perfect fit). Per-cell or grid-wide. Photos stop landing in places where they had to be pillarboxed within an inch of their lives.

Plus

Vision tags, 18+ filters

Filter by what's actually in the frame — faces, bodies, text, animals, scenes, brightness, monochrome, horizon tilt, blur or smudge, letterbox bands, even feature-print similarity. The Vision framework does the work on-device. A small progress ring on the status bar shows the analysis happening without nagging.

Plus

Subject Zoom — six framing modes

Fill to Face, Fill to Torso, Fill to Torso Only, Fill to Person, Zoom to Body, or Off. The cells reframe themselves around what matters and stay framed when the playhead moves. Sometimes the clip is right and the framing is just being weird; this fixes it.

Plus

Smart Captions

On-device natural-language captions and tags via Apple's FoundationModels — macOS 26 with Apple Intelligence required. Your Mac writes the notes. Nothing leaves the device. You stop pretending you'll remember the file by its name.

Plus

Pick Tray

Hover a cell and press P to flag it for later. Open the drawer to see what you saved, filter the grid down to just your picks, or clear them all. A shortlist for tasteful commitment-phobes.

Plus

QuickFill cells

Stack up to six items in a single grid slot — vertical or horizontal, your choice — and the cell cycles through them with the same gapless playback as a single clip. More content, fewer cells, no extra UI for what's effectively a little sub-grid.

Plus

FlexLayout editor

A human-readable markup for custom grid layouts. Edit on the left, live preview on the right, save as a `.flexlayout` file. Share layouts with someone else's Mac and the file is the document.

Plus

Grid Designer

Visual split-and-merge editing for grid cells, with six built-in presets to start from. Drag, divide, combine — exactly the table-like grid you're picturing, in the number of clicks you'd expect.

Plus

Countdown timers

Give any cell its own timer with a visible progress ring. When it finishes, the grid can advance, shuffle, recall a scene, or black out. Stage management for people who prefer not to look like they're stage managing.

Plus

Reaction camera

A live webcam feed in a grid cell. Pick the camera, mirror if you want, and you've got reactions, picture-in-picture, or a witness to the whole operation without opening a second app.

Plus

Folder Browse mode

Subfolders become clickable grid cells with breadcrumbs and back navigation. Drop in a parent folder and the app turns into a calm, file-managed kiosk for whatever lives inside.

Plus

Side pane reader (ePub/PDF)

A reader pane next to the grid — four fonts, eight sizes, three themes. Notes alongside a presentation, a reference next to a review session, a chapter open on the porch while the wall does its thing.

Plus

In/out points & fade transitions

Frame-accurate clip ranges per cell, plus a clean dissolve or fade between media. The grid stops being a folder dump and starts being something you composed.

Plus

Paneless mode & grid padding

Hide every toolbar with Cmd+Shift+I for a clean gallery look, and frame the whole grid with up to 100pt of adjustable padding. It stops looking like software and starts looking like you meant it.

Plus

PNG grid export & collage export

Capture the current grid as a PNG. Export the canvas as a PNG with transparency. Same fidelity as the screen — full editorial-typography pipeline if the cells are using filters or branding overlays.

Plus

Performance indicator

Optional real-time overlay for FPS, memory, and GPU. Mostly for the people who like to watch the numbers; secretly useful when you want to know which folder is hot.

Under the hood

A lot of work went into making this look easy.

Twelve specific decisions about how to play sixteen videos at once on a Mac without setting it on fire. Mostly invisible. Quietly the entire point.

01 of 12

Plays before the folder finishes loading

The scanner works progressively. The first batch of media starts playing in under a second, even when there are tens of thousands of files behind it.

You don't sit through a loading bar. You drop the folder, the grid plays, and the rest scans in the background.

02 of 12

Seams that aren't there

Every cell uses AVPlayerLooper, which keeps internal media replicas alive across the loop boundary. No seek, no buffer, no black flash.

Looping a video most places gives you a tiny stutter you stop noticing. Here, you literally cannot see it happen.

03 of 12

Fullscreen, with no rebuffer

Click a tile to go fullscreen and the overlay borrows the player that was already running in the cell. The same engine just changes where it's drawing.

There's no rebuffer, no poster frame, no spinner. The grid keeps its place. You walk away and back.

04 of 12

Reads the room — at the kernel level

The memory monitor pulls live numbers straight from the Mach kernel — `task_info` for resident memory, `thread_info` for per-thread CPU. The same data Activity Monitor uses.

Most apps pick a fixed quality and let your fan handle the cost. flexGrid tunes itself in four graduated tiers (Normal, Elevated, High, Critical) so the wall stays smooth as the room gets hot.

05 of 12

AVPlayers don't get destroyed. They get reused.

A PlayerPool keeps a small set of media players warm and recycles them across cells. When a tile changes content, the least-recently-used off-screen player has its URL swapped in — same engine, new file, no setup cost.

Spinning up a fresh AVPlayer drags a whole decode pipeline behind it. Recycling is why a sixteen-tile grid feels like four.

06 of 12

Re-scans are nearly instant

A metadata cache persists sixty-plus fields per file — aspect ratio, duration, codec, frame rate, Vision tags, saliency rectangles. Change detection compares `(fileSize, dateModified)` and only re-reads what actually changed.

Big folders that took minutes the first time load in milliseconds the next. The library remembers itself.

07 of 12

Aspect ratios, without decoding pixels

For images, flexGrid reads EXIF dimensions and orientation straight out of CGImageSource — including all eight EXIF rotation cases — without decoding a single pixel.

The layout math runs before the photos are even drawn. Grid composition is instant and never wrong about which way is up.

08 of 12

SmartShuffle plans ahead while you watch

Press R and the next batch is already cooked. The engine pre-computes the next three batches of unseen items in the background after every shuffle, and pre-warms the thumbnails too.

The second shuffle is faster than the first. The third is faster than the second. You stop waiting for randomness.

09 of 12

Eight dimensions of curation, at once

SmartShuffle scores every candidate against a sliding window of what just played — weighted across file kind, aspect ratio, parent folder, date, duration, audio presence, codec, and frame rate.

A naïve shuffle clusters similar items by accident. This one feels hand-curated because the math is doing the curating.

10 of 12

Four Vision passes in one render

Composite detection, brightness classification, monochrome detection, and letterbox detection share a single CGContext render — one pixel buffer, four analyses.

Four separate GPU-to-CPU copies would be the normal way. One copy is the considered way. A small progress ring in the status bar tells you the work is happening; nothing else nags.

11 of 12

Files don't break when you move them

FileRelinker resolves moved or renamed media by matching filename and file size, with sibling-folder inference for the cases where the rename took the parent with it.

Your saved collections survive a reorganisation. The wall stays whole.

12 of 12

Breathing indicators, not spinners

Loading and analysis use concentric pulsing rings (a BreathingIndicator) and small inline PulsingDot accents. ProgressView spinners were retired across the app.

When a calm app has to make you wait, it can do it calmly. The wait stops feeling like the app is in trouble.

None of these are flagship features on their own. The flagship is that you don't have to know about any of them — you just notice that the wall plays, the loops are clean, the seams don't show, and your fan stays quiet.

Use cases

Same app. Different flavors of mischief.

The self-running gallery for a long Sunday

Smart Layout Presets reads your folder's aspect ratios and picks Portrait Gallery, Landscape Theater, or Uniform Stack. Auto-Advance turns the timer up. Paneless mode hides every toolbar. The wall runs itself; you go make coffee.

The art frame with opinions

Drop a folder, turn on Art Gallery, and let it cycle like a very expensive screensaver that went to film school and won't stop referencing Tarkovsky.

The photo cull you've been ducking since Winamp

Sixteen frames at once. Lock the keepers. Flag the maybees. The Picks drawer is there for when commitment feels a little fascist.

The lobby display that minds its own business

Countdowns, clocks, auto-advance, and a grid that keeps itself together without needing an intern or a sacrificial browser tab.

The lecture with actual production value

Scenes for every section, PDFs in the side pane, output on one screen and controls on yours. It looks less like a slideshow and more like you planned your life.

The reference grid for the photo cull you've been ducking

Sixteen tiles. Vision tags filter for faces, brightness, or scenes. Subject Zoom reframes each one around the person. Pick Tray flags the keepers. Then collage-export the contact sheet, on transparent PNG, for the file you'll never name correctly.

Pricing

Free is real. Upgrades are one-time. Everyone relax.

No subscriptions, no membership cult, no little renewal email arriving at 4:12 a.m. Two tiers, one purchase. Free is generous on purpose, and Plus is where the engine starts to show off.

Free
A real app. Not a bread crumb trail.
$0
  • Grid sizes 1–9 (one to nine tiles)
  • Shuffle, tile locking, page navigation
  • Fullscreen with dim, blur, background pause, persistent volume
  • Drag-and-drop loading; instant playback while the folder is still scanning
  • Seamless gapless looping under every cell
  • Background audio + simultaneous audio option
  • Liquid Glass UI on macOS 26 · graceful fallback on macOS 15
  • Siri & Shortcuts integration (9 App Intents)
  • Up to 1,000 scanned items per folder, 100 favorites, 1 source per saved collection
Most popular
Plus
Where the engine starts to show off.
One-time purchase
  • Grids up to 16 tiles (4×4)
  • SmartShuffle — bag-draw, eight-dimensional balance
  • Smart Layout Presets (A/B/C) & Aspect Match (Preferred or Strict)
  • Vision tags — 18+ on-device filters; Subject Zoom in 6 framing modes
  • Smart Captions via Apple FoundationModels (macOS 26 + Apple Intelligence)
  • Pick Tray, favorites drawer, side-pane ePub/PDF reader
  • QuickFill cells (up to 6 items per slot), FlexLayout editor, Grid Designer
  • Countdown timers, reaction camera, Folder Browse mode
  • In/out points, fade & dissolve transitions, advanced playback speeds
  • Paneless mode, grid padding, window clone, performance indicator
  • PNG grid export, collage export, still-frame capture
  • Unlimited scanning, unlimited favorites, multi-source collections

flexGrid v1 focuses on rock-solid core loading and playback. A handful of layout experiments — Masonry, SmartFlex, Canvas, Mood matching — are benched while we retool them, and they're listed on the roadmap below.

On the roadmap

Built, loved, benched for being dramatic.

v1 is about core loading and playback being boringly reliable. A few features arrived wearing too much jewelry and not enough discipline, so we mothballed them until they deserve their entrance music.

Plus Returning

SmartFlex Grid

Drag-to-resize columns and rows, cell spanning, hero-plus-grid layouts. Benched for v1; rebuilding on a calmer engine before it makes its return so it stops fighting the rest of the layout system for the wheel.

Plus Returning

Canvas mode

Blank-cell collage builder with per-cell drag-and-drop. Returning alongside the SmartFlex rework so both features can stop fighting over the furniture.

Plus Returning

Masonry layout

Thirty-plus magazine-style templates with varied cell sizes for visual variety. Paused while we give the template set fewer filler episodes and tune the algorithm to play nicely with Smart Layout Presets.

Plus Returning

Mood matching

Auto-arrange cells by color gradient, visual energy, or similarity clusters. Paused while we revisit the clustering model and ask it to be less chaotic-neutral.

Plus Returning

Mood board export

Styled export with titles, subtitles, and filename labels for client-ready deliverables. Returning alongside Canvas once both of them have better manners.

Free Returning

Lava Lamp mode

Full-window metaball shader with eight color palettes. Benched for v1 because if it ships, it needs to glide — not cough theatrically on older Macs. Coming back when the shader scheduler is happy on any supported Mac.

No roadmap dates. We ship when it's ready, not when the internet gets fidgety.

Design philosophy

It adapts to your Mac instead of acting like a startup internship.

flexGrid reads memory pressure and CPU load at the kernel level, then trims caches, recycles off-screen players, and skips the pricey stuff automatically. You don't have to babysit it with a settings spreadsheet. It just keeps the party from getting tacky.

Read the engineering gossip →

Where it doesn't fit

Not a video editor. Not a slideshow generator. Not an OBS replacement.

flexGrid plays your folder as a wall. The cuts, the keying, the live mix — those tools stay where you put them, and flexGrid stays where it earns its keep.

Frequently asked

Which Macs does flexGrid run on? +

macOS 15 (Sequoia) or later, on Apple Silicon or any Intel Mac with Metal. Liquid Glass UI, Smart Captions, and the AI export effects want macOS 26 and Apple Silicon. Everything else is less emotionally needy.

Do I need an account? +

No. There is no sign-in screen because there is no sign-in cult. No accounts, no sync, no analytics, no network calls for features. Your Mac already knows enough about you.

Is it a subscription? +

Absolutely not. Free is a real tier, not a bread crumb trail. Plus is a one-time purchase through StoreKit 2. You buy it once and then everyone can go lie down.

What's the difference between Free and Plus? +

Free is a fully functional multi-video grid player — drop a folder, play up to nine tiles, shuffle, lock, loop, go fullscreen, automate with Siri & Shortcuts, all of it. Plus is where the engine starts to show off: bigger grids (up to sixteen), SmartShuffle's eight-dimension balance, on-device Vision tags and Subject Zoom, Smart Captions, Pick Tray, FlexLayout editor, Grid Designer, Smart Layout Presets, Aspect Match, and the unlimited-everything caps.

What about SmartFlex, Canvas mode, Masonry, Lava Lamp? +

They're real, they're beloved, and they're temporarily in the penalty box. v1's priority is rock-solid loading and playback; those features needed more refinement than we could finish without lying through our teeth.

What media formats are supported? +

Video: MP4, MOV, M4V, AVI, MKV. Images: JPG, PNG, HEIC, GIF, TIFF, WebP. Background audio: MP3, M4A, WAV, FLAC, AIFF, AAC. ePub and PDF in the side pane. If your Mac can play it, flexGrid can usually turn it into a wall.

What macOS version do I need? +

macOS 15.0 (Sequoia) or later. Liquid Glass UI and on-device Smart Captions require macOS 26 with Apple Intelligence. The rest of the engine runs on Apple Silicon or Intel with Metal — 8 GB of RAM or more is comfortable for the bigger grids.

Open it. Bring a folder. See what happens.

The TestFlight beta is free while we polish the launch build. You'll know within a minute whether flexGrid is your thing, which is more than we can say for most software relationships.