fmsave

Read your Football Manager 26 saves from disk into Python records, DataFrames, CSV and JSON. fmsave is read-only: it never modifies a save, makes no network connections, and does not read game memory.

Install

fmsave needs Python 3.12 or newer.

uvx fmsave info path/to/career.fm   # try it without installing
pip install fmsave
pip install "fmsave[pandas]"        # adds Table.to_pandas()

Quickstart

import fmsave

with fmsave.open("career.fm") as career_save:
    my_club = career_save.managed_clubs()[0]  # empty when you are between jobs
    squad = career_save.players().where(club_uid=my_club.club_uid)

    for player in squad.sorted_by(lambda player: player.ability.current, reverse=True)[:5]:
        print(player.name, player.age, player.ability.current, player.attributes.finishing)
        # "Alex Example" 24 148 16

    squad.write_csv("squad.csv")

Or the same thing without writing any Python:

fmsave export career.fm players --managed-club -o squad.csv

Where saves live

  • macOS: ~/Library/Application Support/Sports Interactive/Football Manager 26/games/

  • Windows: usually Documents\Sports Interactive\Football Manager 26\games\

  • Steam Cloud and other stores may keep saves somewhere else.

If the game is running, copy the save and read the copy.

Start here

  • Your squad: from a save file to a sorted squad with attributes, contracts and filters. Read this one first.

  • Getting data out: DataFrames, CSV, JSON, and the fmsave export command.

  • What a save holds: the twenty-six readers, and what no save can tell you.

  • Trusting a number: how to tell a verified field from an unconfirmed one, and what a reader’s checks mean.

The reference section documents every record, field and command.