Video hosting and sharing

Host your videos.
Control who watches.

Upload or record a video. Share a link, embed it on your site and see how it performs.

Free plan. No credit card.

Scroll to explore
Ad-free playbackAccess you controlLinks and embeds

Features

Decide who gets access.

Client previews, lessons or team updates. Share each video with the access settings you need.

How it works

Add a password

Protect a video or playlist with a password. Change it when access needs to change.

Share with a group

Give members of a saved audience their own access links.

Choose your domains

Set which websites may embed your videos.

How it works

From your device to your audience.

01

Upload or record

Add a video file or capture your screen or camera in your browser.

02

Make it yours

Choose a cover, add chapters and set who can watch.

03

Share it

Send the link or copy the embed code for your website.

Built for your workflow

Do more with the videos you share.

From the first recording to the next update. Features vary by plan.

Record in your browser

Capture your screen, camera or both for demos, walkthroughs and updates.

New file. Same link.

Replace a video without changing the link or embed you've already shared.

See what gets watched

Track views, watch time and where viewers stop watching.

Connect your tools

Upload and manage videos through the API, or connect a compatible AI tool through MCP.

One collection. One link.04
Try the experience

Playlists

A whole collection. One link.

Put demos, lessons or client previews in a playlist. Share the collection from one page.

  • Arrange videos in the order you want
  • Protect the playlist with a password
  • Share a link or embed the playlist
Create a playlist

Meet Vidnap Flow

One video leads to the next.

Turn a playlist into a vertical viewing experience. Share a link or embed it on your site. Your audience just presses play.

  • Automatic playback in your chosen order.
  • Play, pause and sound. Nothing in the way.
  • Your videos, in a page you control.
Vidnap Flow

Tap the sides to explore. The videos play on repeat.

Built for your stack

Your app uploads. Vidnap handles the video.

Add video uploads to your app or workflow. Send the file, let Vidnap process it, then share or embed the result.

  • Direct file transfer with signed upload URLs.
  • Check processing status through the API.
  • Use your own tools. Keep your own workflow.
Get an API key

Available on plans with API access.

upload.mjs
import { createReadStream } from 'node:fs';
import { stat } from 'node:fs/promises';
import { basename } from 'node:path';
import { randomUUID } from 'node:crypto';

const file = './video.mp4';
const token = process.env.VIDNAP_API_TOKEN;
if (!token) throw new Error('Set VIDNAP_API_TOKEN');
const { size } = await stat(file);
if (size <= 0 || size >= 100_000_000) {
  throw new Error('Use an MP4 under 100 MB for this example');
}

async function api(path, body) {
  const response = await fetch(`https://api.vidnap.com/v1${path}`, {
    method: body ? 'POST' : 'GET',
    headers: {
      Authorization: `Bearer ${token}`,
      'Content-Type': 'application/json',
    },
    body: body ? JSON.stringify(body) : undefined,
  });
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

const upload = await api('/uploads/init', {
  filename: basename(file), mimeType: 'video/mp4', size,
  clientOperationId: randomUUID(),
});
if (!upload.uploadUrl) throw new Error('Direct upload URL missing');

const transfer = await fetch(upload.uploadUrl, {
  method: 'PUT',
  headers: { 'Content-Type': 'video/mp4', 'Content-Length': String(size) },
  body: createReadStream(file),
  duplex: 'half',
});
if (!transfer.ok) throw new Error(await transfer.text());
await transfer.arrayBuffer();

await api('/uploads/complete', { uploadId: upload.uploadId });
const status = await api(`/uploads/${encodeURIComponent(upload.uploadId)}`);
console.log(status);

Node.js 20+. Set VIDNAP_API_TOKEN with videos:upload and videos:read. Example for an MP4 under 100 MB; larger files use multipart. The upload URL lasts 60 seconds. Completion starts processing; the final request checks status once. Poll until completed or failed, respecting API rate limits.

Pricing

Start free. Grow when you need.

Choose the storage, tools and limits that fit your work.

Loading plans…
Free plan availableUpgrade from your accountLimits listed by plan

FAQ

A few things to know.

Can I start for free?

Yes. Create an account without a credit card. The Free plan has its own storage, upload and retention limits.

Do viewers need an account?

Public videos play from a link or embed without a vidnap account. Protected videos require the password or access you set.

Does vidnap support 4K?

Yes, on plans with 4K enabled. Upload size, storage and processing limits depend on your plan.

Can I embed videos on my website?

Yes. Copy the embed code for a video or playlist. Plans with domain restrictions let you choose which websites can use the player.

Which features are included?

Compare the plans above for storage, upload limits and tools such as 4K, analytics and API access.

Your next video starts here.

Upload a file. Get a link you can share.