Uploading video

Playflow accepts a batch of video files, checks each file before admission, and keeps the transfer in a shared queue. The queue remains visible while you move between Dashboard, Library, and folders.

Where to start

Choose Upload video from Dashboard or Library to open the upload dialog. You can also drag files onto either page. The page drop overlay identifies the destination: the Library, the folder you are viewing, or a folder card under the pointer. A drop inside the dialog belongs to the dialog and does not start a second page drop.

Batch selection and concurrency

The file picker accepts multiple files. Playflow preserves their order in the queue and transfers up to 3 files concurrently. Additional admitted files wait for a queue slot; a waiting item does not need to be selected again.

Titles and details

Each new video starts with a title derived from its filename: the final extension is removed, Unicode is normalized, and repeated whitespace is collapsed. The picker does not ask for a title or description. Edit the title and description later on the video detail page.

Workspace limits and admission

Preflight checks every selected file for a positive content length, supported type, an exact-file resume, upload-size headroom, video-count headroom, and storage headroom. A batch can be partially admitted, so the review lists files that fit separately from files that do not.

Preflight is a capacity check, not a reservation. No bytes are uploaded or quota is reserved for a file that has not been admitted. After you confirm the files that fit, normal admission is authoritative: it checks the workspace again, reserves the declared bytes and video-count slot, and then issues the time-limited direct-upload credentials.

Supported formats and size limits

The client and server accept MP4 (.mp4), MOV (.mov), WebM (.webm), MKV (.mkv), and MPEG (.mpeg or .mpg) video files. The corresponding MIME types are video/mp4, video/quicktime, video/webm, video/x-matroska, and video/mpeg. A browser that supplies no MIME type can use one of those recognized extensions; an explicit unsupported MIME type is rejected.

Filenames must use safe Unicode letters, numbers, marks, spaces, dots, parentheses, underscores, or hyphens and be no longer than 255 characters. The upload-size limit is a workspace entitlement and may be changed by a plan or account override, so the UI and server response are the source of truth rather than a fixed number in this guide. Storage and video-count limits are checked at the same boundaries.

Possible duplicates

Duplicate review is metadata-only. Playflow compares the selected file’s name, size, and type when present with existing video metadata. It does not hash file bytes, and a match is only a possible duplicate, not a certainty.

When a possible duplicate is found, the review shows the existing video’s title, upload date, status, and a link that opens in a new tab. Choose Upload anyway or Skip. Skipping one file lets the other files in the same batch continue. If two files in the same batch have matching metadata, the second pauses after the first reservation so you can review it before it continues.

Resumable uploads

Transfers use TUS and resume from the last confirmed byte offset. Upload recovery records remain for 24 hours. After a reload, choose the exact file in the Resume chooser: its name, type, size, and lastModified must match the saved record. A mismatched file cannot take over the reservation.

If the recovery record has expired, the queue shows an expired notice and asks you to restart from zero. Once cancellation is confirmed, the upload is removed from the queue and its recovery record is removed; its reservation is released through the upload lifecycle.

Reconnecting and retry timing

When a transfer loses its connection, the queue shows Reconnecting. Automatic retries wait 1s, 2s, 5s, 15s, and 30s, then retry every 30 seconds for up to 10 minutes. That budget uses the online clock: going offline pauses it, and returning online triggers an immediate retry.

After 30 seconds in Reconnecting, the item yields its queue slot so another waiting upload can proceed. If the retry window ends, choose Retry afterward to resume from the saved offset instead of starting from zero.

After transfer

Uploading shows the transferred percentage. Once transfer finishes, processing can include Queued for processing and Encoding, with a percentage when available. Ready means playback is available. Failed means the upload or processing could not complete; check the displayed error before retrying. Processing time varies with video length, format, and queue demand. A queue wait beyond about five minutes shows a longer-than-usual notice; processing continues automatically.

Closing the upload dialog does not stop admitted uploads. While bytes are transferring, use Cancel upload beside a file and confirm to remove its partial upload. Closing or refreshing the browser page during transfer shows a leave warning.

When all selected files have transferred, the dialog shows Done. You can close it while processing continues in the uploads tray. Processing is not a ready signal, and there is no fixed completion-time promise.

A transferred file changes to processing until the provider reports ready or error. Byte transfer completion is not a ready signal. Processing time depends on the source and provider, and stale processing remains visible with an actionable failure when one is reported.

Upload states

The queue can show waiting, checking, reserved, uploading, Reconnecting, paused, processing, ready, possible duplicate, or error. Pause stops a transfer without discarding its saved offset; resuming or retrying uses the existing upload session whenever it is still valid.

Errors, queue, and tenant audit

Validation and capacity errors stay attached to the affected file in the preflight review and upload queue. Network, provider, reservation, and processing failures remain visible in the queue; retryable failures offer Retry, while terminal failures explain the next action. Tenant audit records cover upload requests, entitlement rejections, completions, cancellations, upload failures, and duplicate decisions.

When a file does not fit

The upload review keeps a limit error with the affected file and separates files that fit from files that do not. A file-size error means that one file exceeds the workspace’s per-upload limit. A storage error means there is not enough workspace capacity for its declared bytes; a video-limit error means there is no available video slot. The shown limit reflects your current plan and any account override.

Choose a smaller file for a per-upload limit, free capacity or request an eligible plan change for workspace limits, and then retry the affected file. You can continue with admitted files instead of restarting the whole batch. Preflight is not a reservation: if capacity changes before admission, the final admission error is authoritative. See Storage and plans.

Examples from the preflight review

  • Upload size: “This file exceeds this workspace upload-size limit.” The rejection code is upload_size_limit_reached.
  • Video count: “Your workspace is at its <limit>-video limit.” The rejection code is video_limit_reached.
  • Storage: “This file needs <size>; <remaining> is left.” The rejection code is storage_limit_reached. Sizes use the workspace’s current available capacity.

Organize the library

The Videos page supports search, filtering, sorting and folders. Folder paths belong to the current workspace. Members with video-update permission can create, rename or move folders and move videos into them. A folder cannot be moved inside itself or a descendant. Delete is allowed only for an empty folder; it does not recursively delete its contents.

Video actions depend on your permissions, its current processing state and the workspace's billing access. Use Replace video to preserve its public identity instead of deleting and uploading another video. Deleting a video removes its access and starts provider cleanup; it is not a way to preserve its watch link.