Skip to content

Album Artist Transform

The ftintitle transform moves featured artist credits from the Artist field into the Title field during sync. For a user-friendly introduction and setup guide, see Artist Transforms.

Origins

This transform is inspired by and ported from the beets ftintitle plugin, which does the same thing when importing music into a beets library.

Original: Copyright 2016, Verrus Source: https://github.com/beetbox/beets/blob/master/beetsplug/ftintitle.py License: MIT

Configuration Reference

[transforms.ftintitle]
enabled = true # Enable the transform (default: false)
drop = false # If true, drop feat. info entirely (default: false)
format = "feat. {}" # Format string, {} is replaced with featured artist
ignore = ["Simon & Garfunkel"] # Don't split these artist names
KeyTypeDefaultDescription
enabledbooleanfalseWhether the transform is active
dropbooleanfalseIf true, drop featuring info entirely instead of moving to title
formatstring"feat. {}"Format string for featuring text in title ({} is replaced with artist names)
ignorestring[][]Artist names to ignore when splitting on ambiguous separators (and, &, with)

Per-Device Override

Device-level settings override global transform settings:

[devices.myipod.transforms.ftintitle]
enabled = true
format = "feat. {}"
[devices.nano]
# No transforms configured — uses original metadata

Patterns Recognized

The transform recognizes these featuring indicators (case-insensitive):

  • feat. / feat
  • featuring
  • ft. / ft
  • with
  • vs
  • and / & / con

Before and After Examples

ArtistTitle
BeforeDaft Punk feat. Pharrell WilliamsGet Lucky
AfterDaft PunkGet Lucky (feat. Pharrell Williams)
ArtistTitle
BeforeA ft. BSong (Radio Edit)
AfterASong (feat. B) (Radio Edit)
ArtistTitle
BeforeArtist A featuring Artist BTrack Name
AfterArtist ATrack Name (feat. Artist B)

Bracket Positioning

When the title contains brackets like (Remix) or (Live), the featuring info is inserted before them:

  • Input: Artist "A ft. B", Title "Song (Radio Edit)"
  • Output: Artist "A", Title "Song (feat. B) (Radio Edit)"

Keywords that trigger this positioning: remix, edit, live, remaster, version, mix, instrumental, extended, demo, acapella, club, radio, vip, rmx

Edge Cases

ScenarioBehavior
Title already has feat. infoSkip (don’t double-add)
No featuring indicatorPass through unchanged
drop = trueRemove feat. from artist, don’t add to title

The ignore List

Some artist names naturally contain words like “and”, ”&”, or “with” that the transform would otherwise treat as featuring indicators. Add these to the ignore list to prevent incorrect splitting:

[transforms.ftintitle]
enabled = true
ignore = ["Simon & Garfunkel", "Hall & Oates", "Earth, Wind & Fire"]

CLI Output

When transforms are active, podkit sync --dry-run shows what will change:

Transforms:
ftintitle: enabled (format: "feat. {}")
Summary:
Tracks to add: 5
Tracks to update: 147
Apply ftintitle: 145
Metadata changed: 2
Tracks to remove: 0
Already synced: 1,262
Tracks to update (transform):
Artist A feat. Artist B - Song Name
-> Artist: "Artist A"
-> Title: "Song Name (feat. Artist B)"

See Also