Skip to content

Features

What Vidra does, in the order you meet it.

Grouped by lifecycle rather than by marketing category. Every line carries the detail that makes it checkable against a running instance.

Publish

Getting video in, and getting it encoded.

Resumable and chunked uploads
A dropped connection picks up where it stopped rather than starting the file again.
Straight-to-storage uploads
Chunks stream to the storage backend — local or S3 — and never touch the server's disk. A server dying mid-upload loses nothing.
Lean encode path
On the worked example — a 2 GB, 30-minute 1080p source on the default ladder — a full-ladder job reads the source once, down from up to 8, and decodes it in full 3 times, down from 13. The read and decode counts are exact; peak scratch computes to about 3.6 GB from about 10.3, off the ladder's bitrate table rather than a stopwatch.
Upload from a URL
Asynchronous fetch, SSRF-guarded, with a sandboxed yt-dlp path you can enable.
Per-user quotas
Storage limits per account, so one uploader cannot fill the disk.
ClamAV scanning
Optional scanning on upload. Budget an extra 2 GB of RAM if you turn it on.
HLS ladder
H.264 and AAC. A 1080p TargetAll job runs one encode pass and derives both output classes from it, about 1.5 to 2.5 times the source duration on 4 vCPU.
CMAF packaging and DASH
Packaged alongside HLS from the same renditions.
VP9 and WebM download
An optional downloadable rendition next to the streaming ladder.
Codec profile flags
HEVC and AV1 are behind flags and default to off.
Live streaming
RTMP ingest with privacy-gated HLS output, and a replay that becomes a VOD when the stream ends.
Channel auto-sync mirroring
Mirror a channel into your instance and keep it in step.

Watch

The player and everything around it.

Bespoke player
Keyboard shortcuts, picture-in-picture and theatre mode, written for this platform rather than skinned onto a generic one.
I-frame trick-play
Scrubbing runs against an I-frame rendition, so the preview keeps up with the pointer.
Thumbnails, storyboards, chapters
Storyboards drive scrub previews; chapters break a long recording into parts.
WebVTT captions
Upload them, or have Whisper generate them and edit what it produced.
Password-protected videos
Scoped playback tokens, not an unlisted URL that leaks the moment somebody forwards it.
Embeds, oEmbed, RSS, sitemap, PWA
Your video plays on other people's pages, and your instance is readable by the things that index it.

Find

Search and ranking, with the parts still on probation labelled.

Hybrid full-text and trigram search
Two indexes queried together, so a half-remembered title still resolves.
Typo-tolerant autosuggest
Suggestions while typing, tolerant of the wrong letters.
Decayed-counter trending
View counters decay with age, so last quarter's hit does not sit at the top forever.
Co-visitation recommendations
Built from what viewers actually watched next.
LightGBM ranker
Shadow-evaluated: it scores results and its scores are compared, but it does not decide the order until you promote it.

How it compares

A platform you publish to, or software you run.

Every row below follows from that one difference: who sets the rules, who pays for the bytes, and what is still on your disk if you stop.

Who sets the rules

Hosted platforms (YouTube)
Google. The terms, the moderation policy and the ranking are theirs to change.
Vidra
You do. Registration approval, reports and instance settings sit in your own admin console.

Ads and your audience

Hosted platforms (YouTube)
The platform sells advertising against your audience and sets the revenue share.
Vidra
No ad system and no monetisation layer. Vidra is not a creator monetisation platform.

Federation

Hosted platforms (YouTube)
None. Accounts, subscriptions and discovery stay on one platform.
Vidra
ActivityPub and ATProto. Enabled per instance; once on, every channel federates by default and can opt out.

Runtime

Hosted platforms (YouTube)
Not something you run.
Vidra
A Go backend (Go 1.26, Echo) and a Next.js 16 frontend, over PostgreSQL 18 and Redis 8.

Egress

Hosted platforms (YouTube)
Theirs to pay for.
Vidra
Yours, and offloadable: a CDN in front of your HLS, or IPFS gateways carrying public media.

Licence

Hosted platforms (YouTube)
Proprietary, hosted service.
Vidra
AGPL v3. Use it, study it, modify it, redistribute it — and a modified service owes its users the source.

Leaving

Hosted platforms (YouTube)
Takeout exports your video files. The URLs, the embeds and the audience stay on the platform.
Vidra
Your files and your database stay where you put them: media in the storage backend you configured, everything else in one PostgreSQL. Your domain is your domain, so the URLs and the embeds are yours too.

Choosing between self-hosted options? Vidra and PeerTube, compared →

Vidra is a clean-room implementation rather than a fork of anything, and it is not PeerTube-API-compatible. Moving an existing instance across is supported and documented — read the migration overview.

Connect

ActivityPub federation, ATProto for Bluesky, messaging, one storage network, and identity.

ActivityPub
Your channels and videos are addressable from the rest of the fediverse.
ATProto
Viewers sign in with Bluesky, or with any ATProto PDS.
Cross-posting to Bluesky
Optional, for public videos, and off until you enable it.
IPFS media, dual-tier
A public tier that serves through gateways and puts every public video's CIDs in the API so anyone can pin a copy; a private tier keyed to your own swarm — replication, not distribution. Off by default. What IPFS actually does →
Direct messages
One-to-one conversations, with images and files — attachments are capped at 100 MiB and scanned for malware before they become linkable.
End-to-end encrypted conversations
An opt-in conversation type, encrypted in your browser with Olm — the Matrix protocol's ratchet, via @matrix-org/olm — so the server stores only ciphertext and cannot read the content, though it still knows who is talking to whom and when. Two things to weigh before you rely on it: libolm was deprecated by its maintainers on 2024-07-31 and its repository archived, and Vidra's use of it has not been independently audited. Text only: attachments stay in standard conversations, where they can be scanned.
Disappearing messages
Encrypted conversations can auto-delete on a timer, 30 seconds to 90 days. Expired messages vanish from every read immediately and are hard-deleted from the server by a sweeper.
OAuth, OIDC and TOTP two-factor
Sign in through an identity provider you already run, with a TOTP second factor either way.

Moderate

The work that starts on day two.

Reports and moderation
A reporting path for viewers and a queue for acting on it.
Registration approval
New accounts wait for a person to let them in.
Admin console
More than a hundred instance settings, changeable at runtime rather than through a redeploy.

Operate

What you touch after it is live.

The vidra CLI
setup, doctor, status, logs, deploy, rollback, backup and restore, all scripted.
vidra doctor
26 checks against a running instance, with the failure named.
Probes
/healthz, /readyz, /schemaz and /version.
Metrics and traces
Prometheus metrics and OpenTelemetry traces, both first-party.
Durable queues
Postgres-backed, claimed with SKIP LOCKED and leases: queued work survives a restart, and two workers cannot claim the same job.
Roles and replicas
One boot variable splits the same image into api and worker processes. Replicas take leases, elect a leader for sweeps, and drain behind /readyz — soak-tested at two replicas with a deliberate counterfactual.
Schema history
123 SQL migrations, versioned with the code.
API surface
230 paths under one OpenAPI contract.
Accessibility
Accessibility failures fail the build: axe gates CI in both frontends, and this site's own CI gates WCAG 2.2 AA explicitly.

DRM: None shipped: a test lane proves the seam, and production DRM sits behind an unbuilt roadmap item. If your distributor requires encrypted playback today, Vidra is the wrong tool.

Two more things Vidra does not do
In-player peer-to-peer
A decision, not a gap: Vidra adds no peer-to-peer in the player, so watching a video never exposes a viewer's IP address to other viewers. The reasoning is published. Size your bandwidth for every byte the instance serves.
A hosted tier
A design decision, not a gap in the roadmap.

Start with one command.

One command. 4 vCPU. $56 a month.

Install