The Viraly Media Library has a brand-new uploader. Pull files from your device, your camera or screen, any URL on the web, or your cloud storage — Unsplash and Dropbox are live today, with Google Drive, OneDrive, Box, Instagram, and Facebook on the way. Multi-gigabyte videos upload reliably even on flaky Wi-Fi, and you can pick up where you left off after a refresh.
What changed
The previous Media Library uploader was a single drag-and-drop tile that buffered each file through our API. It capped at roughly 100 MB per file, broke on dropped Wi-Fi, and offered no way to grab anything that wasn’t already on your device.
The new uploader fixes all three. Files go directly to S3 in 8 MB resumable chunks, the modal exposes capture devices and cloud-source pickers, and you can paste any URL to fetch an image server-side. Three big additions, one familiar drag-and-drop tile.
Opening the uploader
Two ways into the same uploader:
- Media Library — go to Scheduler › Media Library and click the Upload tile. The Uppy Dashboard opens directly.
- Post composer — open any post, click the central drag-and-drop area, and the same uploader appears. You can still drag files straight onto the composer (it bypasses the modal for speed); clicking opens the full picker so you can grab from cloud sources or your camera.
The picker has a left rail of sources (My Device, Camera, Screencast, Audio, Import from URL, plus any enabled cloud-source tile) and a main area that switches based on what you click.
My Device — drag, drop, or browse
The default tile. Three ways to add files:
- Drag files from Finder/Explorer onto the modal.
- Click browse files to open the native file picker.
- Paste an image directly from the clipboard (
Cmd+V/Ctrl+V) — useful for screenshots.
Files start uploading immediately when you click Upload. Each file shows its own progress bar, and you can pause, resume, retry, or remove individual files mid-batch.
Capture from your device
Three capture sources are built in, no extensions or apps required:
- Camera — record photo or video using your webcam, with audio. Useful for quick reaction selfies or talking-head intros.
- Screencast — record your full screen, a single application window, or a browser tab. Great for product demos and feature walk-throughs.
- Audio — record a voice memo from your microphone. Drops the result in as a regular media-library audio attachment.
Each capture tile asks your browser for permission the first time you use it. Once granted, the recording controls (start/pause/stop, mirror, mic level) appear inline.
Import from a URL
Paste any direct image URL into the Import from URL tile. Viraly fetches the file server-side and lands it as a normal media-library attachment — no “right-click, save, then re-upload” round-trip.
Useful for: pulling images from Notion or Google Docs links, grabbing product photos from a Shopify CDN, importing a single asset from a brand kit hosted on someone else’s site.
Cloud sources
Cloud-source tiles let you browse and import directly from your accounts on third-party services — no download/re-upload step. We’re rolling these out as each provider’s OAuth approval lands.
Live today
- Unsplash — search the full Unsplash photo catalog and import a high-resolution copy of any photo. Photos are free for commercial use under the Unsplash License.
- Dropbox — connect your Dropbox account once, then browse your full Dropbox tree and pick any file (image, video, document, audio) to import. Read-only — Viraly never writes back to your Dropbox.
Coming soon
Each appears in your uploader the moment its OAuth approval finalizes. No code update needed on your side.
- Google Drive
- OneDrive
- Box
- Instagram (your own posts and Reels)
- Facebook (your own pages and albums)
Until each is live, its tile is hidden — there are no half-shipped placeholders cluttering the picker.
Large files, flaky connections, and resume
Three reliability features run automatically — you don’t have to enable anything:
- Resumable chunked upload — every file is split into 8 MB chunks and uploaded directly to S3 with multipart upload. If a chunk fails, only that chunk retries. Network blip mid-video? It picks up where it left off.
- Browser-refresh resume — if you accidentally refresh or close the tab during a big upload, the file’s progress is saved in your browser. Reopen the same upload modal and the file will appear in its previously-paused state, ready to continue.
- Smart compression — phone screenshots and large JPEGs above 5 MB are losslessly recompressed to JPEG quality 92 in the browser before upload. iPhone HEIC/HEIF photos are converted to JPEG automatically.
Supported formats & size limits
- Images — JPG, PNG, WEBP, GIF, HEIC/HEIF (auto-converted to JPEG).
- Video — MP4, MOV, WEBM, AVI, MKV.
- Audio — MP3, WAV, OGG, M4A, AAC, plus WebM recordings from the in-browser Audio plugin.
- Documents — PDF, DOCX, PPTX (depending on your plan).
Per-channel size limits (e.g. Instagram, TikTok, YouTube) are enforced when you actually attach the file to a post for that channel — not at upload time. The Media Library will accept anything within your plan’s per-file ceiling.
Inside the post composer
The post composer has the same uploader behind two different gestures:
- Drag a file onto the composer’s drop area — uploads directly without opening the modal. Fastest for one-off photos already on your desktop.
- Click the drop area — opens the full picker (capture, URL, cloud sources). Use this when you want to grab from Dropbox, record a screencast, or import from Unsplash.
- Select from Media Library — opens the existing media-library picker. Anything you’ve previously uploaded (including from cloud sources) shows up here.
This is the same pattern Buffer and Hootsuite use: pull a file in once, then pick from the library every time you compose. You don’t have to re-import the same Drive folder for every post.
Troubleshooting
A cloud-source tile is missing
OAuth approval for that provider hasn’t landed yet. Tiles only appear after the corresponding OAuth integration is live in production. Check this article periodically for updates, or follow our changelog.
Upload is stuck at 100% but no file in the library
For images, there’s a brief processing step (thumbnail generation) after upload completes — usually under 5 seconds. If it’s been longer than 30 seconds, refresh the Media Library; if the file’s still missing, contact support with the file name.
Camera or Screencast asks for permission every time
That’s your browser’s permission policy, not Viraly. In Chrome / Brave / Edge, click the camera/screen icon in the address bar and choose Always allow for app.viraly.io. Safari requires re-granting per session by design.
Big upload failed mid-way and progress was lost
Browser-refresh resume only kicks in if the same browser tab is reopened to the same upload modal. If you closed the tab and went somewhere else, the progress was discarded. Re-add the file — the upload will be fast for chunks already in S3 (S3 deduplicates content-identical multipart parts) but you’ll see the full byte count progress.
“Failed to register from Companion” error
Rare. Means Companion uploaded the file to S3 but our backend rejected the registration step. Try again — usually a transient network issue. If it persists, the file may already be registered (you’ll see it in Media Library on a refresh).