Using this converter with a keyboard and no mouse

Tab skips straight past the upload area. It is a plain div with no tab stop, so the keyboard never reaches it.

No tab stop on the upload area Quality menu works by keyboard Download is 7 Tabs away

Short answer: no. You cannot start a conversion on this page without a pointing device. The upload area is a <div> with no tabindex, no role and no keyboard handler, so pressing Tab never lands on it, and no key you press there opens the file picker. The file input behind it carries the hidden attribute, which is what the click handler normally opens for you.

What I measured today, in Chrome 153 on this site: there are 18 tab stops on the home page and none of them is the upload area — the sixth stop is the quality menu, and the upload area is simply absent from the sequence. I pressed Enter on 14 of those stops in a row: 0 opened a file picker, 10 navigated me to another page, and 4 did nothing. A real mouse click on the same drop zone opened the picker on the first try, so the mechanism works — it just has no keyboard entry point.

Two parts of the tool are keyboard-operable: the quality menu, and — once a file is in — the download link and the "Convert another" button.

The Tab order, measured

Fresh page load, then Tab pressed once at a time, recording what had focus after each press. The converter sits above the guide list, so if the upload area were reachable it would have to appear early:

TabWhat has focusWhere it goes
1Brand logo/
2Guides/guides
3About/about
4Privacy/privacy
5Contact/contact
6Quality menu (<select>)—
7First guide link/heic-to-jpg-without-javascript
8–11Four more guide linksguide pages
12"More guides"/guides
13–18Footer brand and five footer links/, /guides, /about, /privacy, /contact

Eighteen stops, and the drop zone is not among them. Shift+Tab works as expected for going backwards — from the eighth stop it returned to the seventh — so this is not a focus trap; the upload area is simply not in the chain.

Why the keyboard cannot reach it

Three measured facts about that element:

The element still looks fully alive to the eye: computed display: flex, cursor: pointer, and a box 714 × 180 pixels sitting 288 px from the top of the page. Nothing about it is dimmed or marked unavailable. That gap between how it looks and what the keyboard can do is the whole problem.

Pressing Enter on every stop

Maybe the picker is reachable some other way — perhaps a key handler on the page, or on the quality menu. So I reloaded the page and, for each of the first fourteen tab stops, pressed Enter on whatever had focus. I watched for the browser's own file-chooser event, which is the same event a real file dialog produces:

I also tried the two keys that normally stand in for a click on a control that has focus: Enter and Space, with focus on the upload area, on the body, and on the quality menu. None of the three produced a file picker, and the console stayed empty.

To be sure the test was not simply blind, I clicked the drop zone with a real mouse event: the file chooser event fired immediately, once. So the click handler is there and works. Only the keyboard route is missing.

What does work without a mouse: the quality menu

The quality menu is a native <select> with a proper <label>, and every standard key worked. Starting from the default 85%:

KeyValue afterOption
(initial)0.85Good — 85%
ArrowDown0.75Smaller file — 75%
ArrowDown again0.75Smaller file — 75% (already last)
ArrowUp0.85Good — 85%
Home0.95High — 95%
End0.75Smaller file — 75%
Letter G0.85Good — 85%

Choosing a value with the keyboard is not cosmetic — it changes the output. Converting the same 700×476 photo after reaching a setting by keyboard only:

Reached bySettingOutputPage showedTime
ArrowDown0.7530,231 bytessample.jpg — 700×476 — 30 KB846 ms
Home0.9557,617 bytessample.jpg — 700×476 — 56 KB611 ms
End0.7530,231 bytessample.jpg — 700×476 — 30 KB705 ms

Those are the same byte counts this converter produces for that photo at those settings with a mouse — see the repeat-conversion measurements. Whatever route you take to the setting, the encoder behaves identically.

Once a file is in, the rest is keyboard-friendly

This is the part worth knowing if you use a keyboard for everything else. I supplied the file at the browser level — the equivalent of the file dialog returning — and then used only Tab and Enter from there:

Focus rings, and what a screen reader is told

I sampled the first 12 tab stops and read their computed focus ring while they had focus. All 12 showed the browser's default ring — outline: auto, 1 px, rgb(16, 16, 16) — and all 12 matched :focus-visible. So this is not a page where focus has been deliberately suppressed: wherever the keyboard can go, you can see it.

The accessibility tree tells the same story from the other side:

ElementRoleAccessible nameFocusable
Upload areageneric(empty)no
Quality menucombobox"Quality"yes
Download linklink"Download JPG"yes
Convert anotherbutton"Convert another"yes
The hidden file inputnot present in the tree at all

The upload area is exposed as a generic container with an empty name — there is nothing there that reads as a control, because there is nothing there that behaves as one. The two controls that do work have proper names. Counting across the whole page: 2 aria-* attributes (both aria-hidden on decorative icons), 0 role attributes, 0 aria-live regions, 1 <label>, 0 skip links, and 0 tabindex attributes. I did not run a real screen reader, so I have no result for how any specific one announces this page.

Everything else on the site behaves differently in a good way. On the guides index I counted 30 tab stops and every single one was a link — ordinary prose pages are fully keyboard-navigable, which is why the converter stands out.

What would fix it

I tried four fixes, in my own browser only — this is client-side surgery on a copy of the page in my own Chrome, nothing on the site was changed, and the site is still as measured above. In each case I Tabbed to the modified drop zone and pressed Enter, watching for the file chooser:

ChangeReachable by TabEnter opens the picker
Add tabindex="0" to the divyes — 6th stopno
Add tabindex="0" and role="button"yes — 6th stopno
Insert a real <button> that calls click()yes — 6th stopyes
Add tabindex="0" plus a keydown handleryes — 6th stopyes

That is the crux: tabindex alone gets you focus but not activation. A div has no default action for Enter, and role="button" is an announcement — it does not add behaviour. You need either a real <button> (or a <label> tied to the input) or an explicit key handler.

One more result I cannot give: Space. My key injection never managed to activate a real <button> with Space, even in the control case, so I have no trustworthy Space measurement and I am not going to guess.

How to check it yourself

  1. Open the converter and click nothing.
  2. Press Tab repeatedly and watch where the focus ring lands.

You will go: logo → Guides → About → Privacy → Contact → quality menu → guide links → footer. You will never land on the drop zone, and no key on the quality menu will let you choose a file. Compare that with the guides index, where Tab walks cleanly through every link on the page.

Questions

So a keyboard-only user cannot use this converter at all?

Not to start a conversion. The file picker is only ever opened by a mouse click on the drop zone, and I found no key that reaches it. Once a file has been supplied, the download link and the reset button are both normal keyboard controls.

Is dragging a file in a workaround?

I could not test it honestly. Automation cannot produce a real file drag, and the drop path on this page is a script handler. What I can say is that a drag is a pointer gesture, so it is not a keyboard route either.

Does the page tell you anything about this?

No. The upload area renders at full size with a pointer cursor and the usual text, and there is no message about keyboard support anywhere on the page. The failure mode is silence — the same silent failure I measured with JavaScript turned off.

Would this be hard to fix?

Based on what I tried, one element type. Making the drop zone a real <button> — or adding a key handler to it — was enough for Enter to open the picker in my tests. Adding tabindex by itself was not.

Does any of this affect the "nothing is uploaded" claim?

No, that is a separate property of the tool and it holds regardless of how you operate it. It is measured at the network layer in the upload test.

Can I convert HEIC without a mouse somewhere else?

I only have measurements for this site, so I will not speak for other tools. On this one, the honest summary is: the quality setting and the download are keyboard-operable, the file choice is not.

Try it: open the converter, press Tab six times and see where you end up.

First published: 4 October 2026