Recording7 min readUpdated September 2026

Audio recording on Linux: the stack, and what to actually use

Linux audio has a reputation for being difficult that is mostly out of date. PipeWire changed things, and for recording a voice the setup is now about as simple as anywhere else.

By The Hilite team

01 — The layers

ALSA, PulseAudio, JACK and PipeWire

ALSA is the kernel layer that talks to the hardware. Everything sits on top of it, and you rarely interact with it directly.

PulseAudio was the desktop sound server for years: easy, convenient, and not built for low-latency work. JACK was the professional alternative: excellent for recording, awkward to run alongside ordinary desktop audio.

PipeWire replaced both and is now the default on most current distributions. It speaks PulseAudio and JACK protocols simultaneously, so desktop applications and professional audio software both work without you choosing between them.

This matters because most Linux audio guides online predate PipeWire and describe workarounds you no longer need. Check what you are running with pactl info before following any of them.

Tip

If pactl info reports PipeWire as the server name, ignore any guide that tells you to configure JACK by hand. It is already handled.

02 — What to install

Audacity, Ardour, or something simpler

Audacity is in every distribution's repositories and is the right starting point for recording and editing a voice. Multitrack, free, and with a very large body of documentation.

Ardour is the full digital audio workstation, genuinely professional, and more than a spoken recording needs. It is worth it if you are producing music or working with many tracks.

For a quick capture, GNOME Sound Recorder or the command line are both fine. A single arecord or pw-record command produces a WAV without opening anything.

Install pavucontrol whatever else you choose. It is the graphical mixer that lets you see and reassign every stream, and it solves most routing problems in a few clicks.

03 — Getting sound in

Selecting the input and setting the level

Open pavucontrol, go to the Input Devices tab, and check your microphone is not muted and its level is sensible. Speak and watch the meter.

In Audacity, set the host to PulseAudio, which PipeWire provides, and choose your microphone as the recording device. Set the project rate to 48,000 Hz.

The useful trick with pavucontrol is the Recording tab. Start recording in any application and that tab shows which source it is using, with a dropdown to change it live. Fixing routing while it happens is much faster than guessing beforehand.

Watch for automatic gain control on some webcam microphones, which pumps the level up and down. Turn it off in pavucontrol if the option is there.

04 — System audio

Monitor sources, which are already there

This is where Linux is genuinely easier than macOS. Every output has a corresponding monitor source, which is a loopback of what is playing, and it exists without installing anything.

In Audacity, look for a recording device with Monitor in the name. Select it and you capture system playback directly.

If it does not appear in the list, start recording anything, then use pavucontrol's Recording tab to point the stream at the monitor source while it runs.

To record your voice and system audio together on separate tracks, PipeWire's routing handles it, and Helvum or qpwgraph give you a visual patchbay to connect things by dragging.

Tip

qpwgraph is worth installing even if you never use it deliberately. Seeing the actual connections makes Linux audio far less mysterious.

05 — When it goes wrong

The three usual faults

Crackling and dropouts are usually buffer size. Raise the quantum in PipeWire's configuration, or simply increase the buffer in your recording software. Real-time scheduling permissions help too, and most distributions set those up now.

A device that does not appear is often a permissions issue: your user may need to be in the audio group. Check with the groups command.

Sound going to the wrong place is a routing issue, and pavucontrol's Playback and Recording tabs solve nearly all of them. Change the assignment while the stream is live rather than hunting through configuration files.

If you would rather avoid the stack entirely, a browser recorder works on Linux exactly as it does everywhere else, using whatever the browser already has permission to use. Hilite is one of those and we make it, so weigh that as you like.

No stack to configure

Record in the browser on any distribution

Recording, clean-up and publishing with nothing to install.

See how recording works

Recording in a browser, which works everywhere.

Try Hilite free.

Try Hilite free