Malachite
malachite Last.fm & Spotify → Teal
Support
web v0.9.2 -- cli v0.19.3
The Malachite sigil: a circular emblem of concentric teal and green rings forming a sacred circle, overlaid with a pale green pentagram binding five points, centred on a single dot representing the listener as witness

malachite

Open source · Runs in your browser

Bring your listening history
back under your control.

Malachite imports your listening history into Teal — so your music data stays with you, not the streaming platforms.

01

What it does

Last.fm

Import your full scrobble history from a Last.fm CSV data export.

Spotify

Import extended streaming history from Spotify's JSON data export.

Apple Music

Import your library and play history from Apple Music CSV exports.

YouTube Music

Import your music history from YouTube Music (via Google Takeout).

ListenBrainz

Import your listens from a ListenBrainz JSON export.

Combined

Merge sources together with smart deduplication to avoid double-counting plays.

Sync

Only import records not already in Teal — safe to re-run any time.

Deduplicate

Find and remove duplicate records already in your Teal account.

Polish

Migrate legacy fm.teal.alpha scrobbles into the current fm.teal.feed.play collection.

02

How it works

  1. 1
    Choose a mode

    Pick a music service, or combined, sync, deduplicate, or polish.

  2. 2
    Sign in with ATProto

    Use your Bluesky handle and an app password. Nothing is stored.

  3. 3
    Upload your export

    Drop in your CSV or JSON files — everything is processed locally in your browser.

  4. 4
    Import

    Malachite publishes your records to your PDS with automatic rate-limit handling.

Ready?

No account needed. No data leaves your browser except to your own PDS.

Start importing
03

More tools like this one

Same idea, different platform — all free and open source.

See the whole toolkit

malachite is free, and staying that way

No ads, no accounts, no tracking — just a tool that does the job and gets out of the way. If it saved you an afternoon, chipping in helps keep it maintained.

Rather not? Star the repo or a word to someone who'd use it helps just as much.