Kultr, in full

Features

Everything Kultr does — and, since it’s usually the interesting part, why it does it that way.

Web Android iOS, planned

Sync

Your whole library, mirrored

Kultr doesn’t ask the server to draw a page. It asks once, keeps the answer, and draws everything from that.

  • One button mirrors every artist, album, track, playlist and genre
  • Browsing, sorting and searching are instant — and keep working with the server switched off
  • Check for updates re-reads the album index and pulls in only what actually changed
  • Checks by itself on start-up and hourly; change that on the Sync page
  • One request per album, so a few thousand albums take a minute or two — once
  • A local database per server, refreshed by background syncs Android
WebAndroid
Kultr's albums grid, with 48 albums and a Sync offline button.

Playback

Two decks, genuinely overlapping

A crossfade in Kultr isn’t a volume trick on one player. Every track plays on one of two decks, so the old and the new really do play at once.

  • Crossfade anywhere from 0 to 20 seconds
  • Four fade shapes: equal power, linear, smooth and sharp
  • Gapless — turn crossfade off and the next track starts the instant this one ends
  • Or a clean cut, if that’s what the album wants Android
  • With InjeKt on, it sets these numbers itself whenever it knows both tracks
WebAndroid
Fade shape8 s overlap
Equal powerSteady loudness through the blend — the usual choice
LinearA straight line each way
SmoothEases in and out at both ends
SharpKeeps a busy mix from turning to mud
Outgoing deckIncoming deck

Mixing

InjeKt, showing its working

Kultr’s mixing engine measures every track, plans each hand-over from the numbers, and puts the plan on screen in the full player’s InjeKt tab.

  • Tempo and beat grid, key in Camelot notation, energy, and where the intro and outro sit
  • Beat-matching from both sides — Tempo share decides how the work is split, and pitch is preserved
  • Bars aligned, basslines swapped, clashing keys filter-swept instead of blended
  • Long intros skipped; an endless, key-aware queue when yours runs out
  • Analysed just in time before each transition, or all at once with Analyse missing
  • A toggle in the player bar and the full player — or press D
WebAndroid
The full player's InjeKt tab: tempo, key, energy, intro and outro for the track playing and the one up next, and when the transition will be planned.

Downloads

Offline, and properly named

There’s a sync button on every page: albums, artists, songs, genres, playlists, favourites, or the whole library.

  • Incremental — run it again and it fetches only what you don’t already have
  • Into the browser, or into a real folder you pick, as readable Artist - Album - Track files
  • Pick the folder once in Settings → Offline; a web page can only write where you’ve pointed it
  • Choose the bitrate, and download on Wi-Fi only if you like Android
  • Downloads play first, before the network is tried, and a stream cache keeps recent tracks too Android
WebAndroid
Music / KultrFolder
  • Kultr101 files
  • Signal Drift - Aurora Vanta - Aurora I.flac38.2 MB
  • Signal Drift - Aurora Vanta - Vanta II.flac41.7 MB
  • Signal Drift - Carrier Wave - Null Modem.flac36.9 MB
  • Nocturne Machine - Low Orbit - Re-entry.flac44.0 MB
  • The Glass Harbour - Salt and Static - Salt Flats.flac29.4 MB
Sync offline · whole library96 already here, fetching 5

Home

A home page you choose

Fifteen shelves — most played, random, favourite and recently added, across tracks, albums, artists, playlists and radio.

  • Switch each shelf on or off, and put them in the order you want
  • A shelf with nothing to show is skipped, so the page never looks half-finished
  • Start an InjeKt set or Shuffle all right from the top
  • Jump back in, albums you keep coming back to, playlists on repeat, internet radio and more
WebAndroid
Home page settings, listing shelves that can be switched on, off and reordered.

Appearance

The colour comes from the cover

The surfaces, the highlights and the backdrop all retint from the artwork of whatever is playing, so Kultr takes on the mood of the music. The rest is up to you.

  • Light and dark themes, and a blurred artwork background
  • Three corner styles: sharp, soft and round
  • Six playheads that preview themselves: minimal, glow, pulse, wave, comet and equaliser
  • Borders that take the accent colour, with opacity sliders for borders and panels
  • An accent you can blend with the artwork’s, rather than choosing between the two
  • Click the time in the player to count down instead of up
  • A Custom CSS box, applied last so it wins over everything
  • A now-playing screen tinted by the artwork Android
Web
Appearance settings: panel opacity, grid size, six playhead styles that preview themselves, and count time down.

Servers

One screen to connect. As many servers as you like.

Name the server, or let Kultr use its address. Then add another.

  • Add as many Navidrome servers as you like, and give each one a name
  • Switch between them, or turn one off without deleting it
  • Leave the address blank when Kultr is proxying Navidrome for you — no CORS to fight
  • Stay signed in, or have the password dropped when the tab closes
  • Each server keeps its own library, downloads and history; passwords are sealed with a key in the Android Keystore Android
  • Speaks the Subsonic API with Navidrome’s OpenSubsonic extensions, so other Subsonic servers largely work too
WebAndroid
Kultr's sign-in screen, with fields for a server name, address, username and password.

Library tools

Select in bulk. Drag and drop.

The desktop gestures you’d expect from a music app, in a browser tab.

  • Tick boxes on tracks and cards; shift-click for a whole range
  • Then download, delete, queue, favourite or add to a playlist in one go
  • Drag any track, album or artist onto a target: play next, add to queue, favourite, sync offline, or delete downloads
  • A queue you reorder by dragging
Web
Aurora Vanta3 selected
Aurora ISignal Drift0:20
Vanta IISignal Drift0:20
Null ModemSignal Drift0:20
InterchangeNocturne Machine0:20
Play next Add to queue Favourite Sync offline

Android

A proper Android music app

Kultr for Android keeps the web client’s behaviour and settings, and adds what only a native app can do.

  • Background playback and a media notification
  • Lock-screen and Bluetooth controls
  • Android Auto
  • “Play … on Kultr” voice search
  • Settings files open in either app — export on one, import on the other
  • Signed releases that install over each other, keeping your servers, library and downloads
Android 8.0 and later
Kultr · now
Null ModemSignal Drift — Carrier Wave
“Play Carrier Wave on Kultr”Voice search, straight into the app
Android Auto Bluetooth Lock screen Notification

Sound

Tuned, levelled, and in sync

The audio settings a music player should have, done properly. Try a preset.

  • A ten-band equaliser with nine presets and a pre-amp
  • ReplayGain, per track or per album, with clipping protection
  • Synced lyrics, line by line, when your files have them; plain text otherwise
  • A sleep timer — after so many minutes, or at the end of the track
  • Streaming bitrate set per network Android
  • The equaliser runs on Web Audio, which needs Kultr and Navidrome on one address — every self-hosted setup does that for you Web
WebAndroid
EqualiserPre-amp 0 dB

Install

On a phone, without a store

Kultr is a web app you can install today, anywhere the Android app isn’t.

  • On iOS, Share → Add to Home Screen; in Chrome or Edge, Install app
  • Runs full-screen, and keeps working offline for anything you’ve downloaded
  • Shows up on the lock screen
  • A native iOS app is planned — the player, sync engine and InjeKt DSP are plain TypeScript, so they port as they are
Web · PWAiOS app, planned
Kultr on a phone: an album page.
Kultr on a phone: the full-screen player with InjeKt on.

Keyboard

Hands on the keys

Everything that matters has a key. Press ? in the app for the full list.

  • Search from anywhere with /
  • Switch InjeKt off mid-listen with D, without opening settings
  • Esc closes things, or clears a selection
Web
Keyboard shortcuts?
SpacePlay / pause
MMute
Seek 5 s
SShuffle
Previous / next
RRepeat
Volume
LFavourite
/Search
QQueue
DToggle InjeKt
FFull player

Cast

Send it to the big speakers

The cast button opens whatever picker the browser provides.

  • Chromecast and friends through the Remote Playback API, in Chrome and Edge
  • AirPlay in Safari
  • Firefox has neither, so the button doesn’t appear rather than sitting there inert
  • The receiver fetches the stream itself, so it has to be able to reach your Navidrome
  • It gets the plain file: the equaliser, crossfade and InjeKt don’t apply while casting
Web
Play on
ChromecastChrome and EdgeReady
AirPlaySafariReady
FirefoxNo casting API, so no buttonHidden

And the rest

Everything else

The parts every music app needs, all there.

Queue with drag to reorder Favourites Ratings Playlists and playlist editing Scrobbling, with an offline queue on Android Sleep timer Internet radio Listening stats Synced lyrics ReplayGain Settings backup, secrets left out Custom CSS Many servers Installable PWA Android Auto Docker, or plain Node No analytics, no telemetry

Hear it for yourself.

The demo is the real app, and it connects to your own Navidrome. Nothing to install.