I work on OnePassApps, and this is our own product - so I could read the wording in the running app instead of guessing at it. Every sentence quoted below was read off the live page on 4 November 2026, signed out, in one browser, on one build.
Almost everything I have written about the OnePassApps studios has been about what they do with a file you hand them. This post is about the other half: what they say when the file is wrong. I fed the studios files that cannot succeed - a text file renamed .png, a zero-byte file, a real PNG that is over the pixel cap, raw binary bytes in a .csv - and read the panel afterwards.
How the files were actually fed in
Each studio takes its file through an ordinary <input type="file">. I drove that input through the Chrome DevTools Protocol (DOM.setFileInputFiles) with real bytes on disk, in a fresh tab per case, and read the visible panel text afterwards. Nothing was uploaded: the files were written to a local temp directory and handed to the input.
| File | Bytes | What it actually was |
|---|---|---|
| good.png | 139 B | a real 64x48 PNG (the control) |
| corrupt.png | 34 B | the text "this is definitely not a png file" |
| empty.png | 0 B | nothing at all |
| notanimage.txt | 37 B | plain text |
| huge.png | 99,684 B | a real 6000x5000 PNG - 30 megapixels |
| binary.csv | 14 B | raw bytes, not text |
| empty.csv | 0 B | nothing at all |
| ragged.csv | 30 B | rows of 3, then 2, then 2 columns |
No console error was logged in any of the eight cases. The control behaved as it should: the Image Studio answered "Image ready. Processing stays in this browser." and nothing else.
The Image Studio refuses in three different ways
The Image Studio's file input declares image/jpeg,image/png,image/webp,.jpg,.jpeg,.png,.webp, and its drop zone carries the line "JPEG, PNG or WebP · up to 25 MiB and 25 megapixels". When the file cannot be used, the studio does not send one generic message. It picks a reason:
| What went in | What the panel said |
|---|---|
| text bytes named .png | "Choose a still JPEG, PNG or WebP image. The file contents do not match a supported image format." |
| a 0-byte .png | "The selected file is empty." |
| a plain .txt | "Choose a still JPEG, PNG or WebP image. The file contents do not match a supported image format." |
| a real 30-megapixel PNG | "Images must be no larger than 12,000 pixels on one side or 25 megapixels total." |
Underneath each of those, the drop zone keeps its own short form - "That image couldn't be opened." - and the source panel goes back to "No image yet. Drop one on the stage or browse for it." So a rejected file leaves the studio exactly as it found it: no half-loaded image, no stale result, and the previous output untouched.
One detail worth having: the input reported no selected file after every attempt, including the successful one. The selection is consumed by the app rather than left sitting in the input.
The limit line is not the whole limit
The drop zone advertises "up to 25 MiB and 25 megapixels". The megapixel cap is real, but the sentence the app shows when it refuses names a limit the drop zone does not: "Images must be no larger than 12,000 pixels on one side or 25 megapixels total." My oversized file was 6,000 pixels on one side and 30 megapixels in total, so this measurement cannot say which of those two numbers did the refusing - the app volunteers both in the same sentence, and the drop zone shows only one of them.
The Audio Studio names the file; the Image Studio does not
For a 0-byte file the Audio Studio is the most specific of the three studios. It says "empty.png could not be opened. This local file is not in a supported audio or video container." - the filename is in the sentence.
Offered a real PNG, the Audio Studio said only "That file couldn't be opened.", the same generic line the Image Studio uses. Offered text bytes, it said the same thing. Its type line reads "MP3, WAV, M4A, AAC, OGG, Opus, FLAC or WebM · up to 32 MiB and 45 minutes", while its input accepts the video containers .mp4, .mov, .mkv and .ts as well - and the refusal sentence itself talks about an "audio or video container", which the type line never mentions.
The Data Studio never refuses
The Data Studio is the odd one out, because it does not reject anything. It parses whatever arrives and counts what it had to fix:
| Input | What the panel said |
|---|---|
| 14 bytes of binary noise in a .csv | "Loaded 1 rows and 1 columns." and "1 rows · 1 column · 1 parsing issue" |
| rows of 3, then 2, then 2 columns | "Loaded 3 rows and 3 columns." and "3 rows · 3 columns · 3 parsing issues" |
| a 0-byte .csv | "Loaded 0 rows and 0 columns." and "0 rows · 0 columns · no parsing issues" |
Every one of those is a successful load - "Delimiter found", a parse time, and a result table. A file of binary noise becomes a one-column table with one issue flagged, not a refusal.
The quiet zero
The last row is the one I would have called a bug before I read it carefully. A completely empty file is reported as "0 rows · 0 columns · no parsing issues" - the issue counter reads zero for a file that contains no data at all. The panel also says "No rows yet". The row count is the only signal that there was nothing there; the issue counter stays silent.
Also worth noting for anyone reading the strings closely: "Loaded 1 rows and 1 columns." - the plurals are unconditional.
What I did not test
- The byte caps. I fed no file over 25 MiB to the Image Studio, none over 32 MiB to the Audio Studio, and nothing over 45 minutes, so those limits are stated by the app and untested by me.
- Which of the two pixel numbers in the refusal sentence did the refusing, as described above.
- Signed-in behaviour. The studios ran signed out here.
- Other browsers. Firefox, Safari and Edge were not run, and image and audio decoding is exactly where browsers differ. The Image Studio's own wording - "Choose a still JPEG, PNG or WebP image" - describes what the browser's decoders accept, and that is a property of the browser, not only of the app.
- The File, Text, Icon and Colour studios. This round covered the Image, Audio and Data studios only.
Where to try it yourself
The OnePassApps Image Studio is the one with the most to read, and the app guides cover what each studio is for. Both run in the tab - no upload, no account needed.
I work on OnePassApps - the team behind app.onepassapps.com - and I drove every one of those cases in our own live app for this post.
Top comments (0)