Device How-Tos

How to Scan Documents on Linux

Quick answer

Scanning documents on Linux does not require a Linux scanner app at all. Your browser — the Firefox or Chrome/Chromium already on your Ubuntu, Debian, Fedora, or Arch system — can act as the scanner: it accesses your webcam, captures each page, cleans up the image, and assembles a multi-page PDF, all in a web page.

How to Scan Documents on Linux — Scanner.cam guide

There is no proprietary Linux client to hunt down, no Wine wrapper, no Flatpak with half-broken hardware access. If your browser can see your camera, you can scan. This guide walks through the browser setup, the Linux-specific gotchas (sandboxed packages are the big one), and the full scanning workflow on the distros most people actually run.

The reason the browser route works so well on Linux is that everything is built on open web standards. WebRTC's getUserMedia — the API that lets a web page request your camera — is supported identically in Firefox and Chromium-based browsers regardless of distribution. The operating system differences that matter are all one layer down: whether your camera device is visible, whether your browser package is sandboxed away from it, and whether the desktop portal hands the permission through. Get those three right and the rest is the same on Ubuntu 24.04 and Arch.

Step 1: pick your browser

Both major browser families work. Firefox ships by default on Ubuntu, Debian, and Fedora; Chrome or Chromium covers the rest. Either can reach a browser-based scanner such as Scanner.cam and request camera access the same way. If you already have one of them installed from your distribution's native package manager (apt, dnf, pacman), you are most of the way there. There is no advantage to installing a second browser just for scanning — use whichever one you already trust.

What you want is the native package version. The reason matters and deserves its own section, because it is the single most common cause of "my camera doesn't work in the browser" on modern Linux desktops.

Step 2: the Snap/Flatpak camera gotcha (read this first)

On Ubuntu 22.04 and later, Firefox is installed as a Snap by default; on many distributions, browsers are also available as Flatpaks. Sandboxed packages run in a container that mediates hardware access, and camera access through that sandbox fails on some hardware — the browser simply never sees the webcam, no matter what you allow in the site settings. This is a well-documented pain point: Snap-based browsers in particular have a reputation for camera problems on certain machines.

Before you troubleshoot anything else, check how your browser is installed:

Try it as you readOpen the scanner in a new tab and follow along — free, no signup.
Open Scanner.cam

If you are on a sandboxed build and the camera does not appear, the reliable fix is to switch to the native package — for example, on Ubuntu/Debian remove the Snap and sudo apt install firefox, or install Google Chrome's official .deb from Google. If you prefer to keep the sandboxed browser, you can work through the portal permissions (Flatpak's permission store can be inspected with flatpak permissions devices camera and reset so the browser prompts again), but on some hardware the native package is simply the path of least resistance.

Step 3: grant the browser camera permission

Once the browser can see the camera at the system level, the website still needs your explicit permission. The flows differ slightly:

One rule is absolute on both: the page must be loaded over HTTPS. Browsers refuse camera access to insecure (plain HTTP) pages entirely — a secure context is required for getUserMedia. If a scanner tool ever asks you to use an http:// address, that is a red flag; use the https:// version.

Step 4: check the camera itself

If the browser still cannot find a camera, verify the hardware layer before blaming the website. On GNOME systems, the Cheese photo app is the standard baseline test — and the same sandbox warning applies: make sure Cheese itself is the native package, not a Snap/Flatpak, or a working camera can still look broken. If Cheese (native) shows your camera, the hardware is fine and the problem is permissions.

On newer desktops that route cameras through PipeWire (common on Wayland sessions), also make sure xdg-desktop-portal is installed with the backend for your desktop environment — xdg-desktop-portal-gnome for GNOME, xdg-desktop-portal-kde for Plasma. Launching the browser from a terminal is a useful diagnostic: permission and device errors often print to the console where you can actually read them.

Step 5: the scanning workflow

With permission granted, scanning on Linux is identical to scanning anywhere else:

  1. Set up the page. Lay the document on a flat surface in good, even light. A dark backing behind light paper helps automatic edge detection.
  2. Position the camera. A laptop's built-in webcam works; hold the page up to it, or tilt the screen back so the camera looks down at the desk. A USB webcam gives you more freedom — Chrome's camera settings page lets you choose which device the site uses.
  3. Capture each page. Keep the page parallel to the camera and hold still for a beat before capturing. For curled pages, weigh the corners down.
  4. Clean up and compile. Crop to the page edges, straighten perspective, boost contrast if the text looks grey, then compile all pages into one PDF and download it.

What about USB webcams and document cameras?

USB webcams work through the same browser pipeline — Linux exposes them as video devices (typically /dev/video0 and friends), and the browser enumerates them the same way it enumerates a built-in camera. If you own a dedicated USB document camera, plug it in, select it in the browser's camera settings, and scan. A document camera — essentially a webcam on a stand pointing straight down — is the closest thing to a flatbed experience you can get without one, and it works entirely through the browser with no drivers to install on most distributions.

If you have a USB flatbed scanner

This guide is about camera scanning, but if you own a USB flatbed scanner, Linux has you covered natively: GNOME's Document Scanner app (also known as Simple Scan) ships with Ubuntu and most GNOME-based distributions and drives many common flatbed and all-in-one scanners directly. For network scanners, check your manufacturer's Linux support — but for camera-based capture of the occasional page, the browser route is faster than configuring SANE drivers.

No camera on the Linux machine?

Some Linux boxes are desktops with no webcam at all. The simplest workaround: scan with your phone's camera and move the files over — USB cable, Bluetooth, or your local network share all work, and the transfer never needs the cloud. If you prefer to keep everything on the desktop, a basic USB webcam is inexpensive and works plug-and-play with the browser approach above.

Does Scanner.cam work on Linux?
Yes. It runs entirely in the browser, so the operating system does not matter — Firefox and Chrome/Chromium on Ubuntu, Debian, Fedora, Arch, and other distributions all support the camera APIs it uses. All processing happens on your machine; nothing uploads.

My camera does not appear in Firefox on Ubuntu. What should I check?
First, check whether Firefox is the Snap build — sandboxed browsers frequently fail to see cameras on some hardware. Switching to the native .deb package (or granting the camera permission through the Flatpak/Snap portal) fixes most cases. Then verify the site has camera permission under Settings → Privacy & Security → Permissions → Camera.

Can I use a USB webcam instead of the built-in camera?
Yes. Linux exposes USB webcams as standard video devices, and browsers list them alongside the built-in camera. In Chrome, open chrome://settings/content/camera to choose the default device; in Firefox, the permission prompt lets you pick which camera the site may use.

Do I need to install anything to scan documents on Linux?
No — that is the point. A browser-based scanner needs no installation, no Wine, and no proprietary Linux client. If your browser can access your camera and the page loads over HTTPS, you can scan.

Which distro and browser combination works best?
Any mainstream combination works: Firefox on Ubuntu/Debian/Fedora, Chrome/Chromium on Arch and derivatives. The variable that matters is not the distro but how the browser is packaged — native packages have the fewest camera-permission surprises.

Try Scanner.cam — Free, Private, On-Device Scanning

Try it right now — free

Open Scanner.cam in your browser, scan, and download. No signup, no watermark, nothing uploads.

Open Scanner.cam
Scan documents free — no app, no signupScan Now