Your universe, your rules

Editor & Community Datasets

Anpfiff puts your football universe in your hands. With the built-in editor, you can shape clubs, players and leagues in detail and make every part feel like your own. Whether you work directly in Anpfiff or with community tools, the open data format gives you and the community everything you need to build, improve and share your own datasets.

Use the editor Build your own editor

What you can edit

Clubs, players, leagues

🛡️

Clubs

Name, short code, city, badge, kit colours, formation, fan character, rivals and fan friendships — make every club your own.

👕

Players

Name, nationality, position, technique, fitness, talent and more. Contract, market value and salary are covered too.

🏆

Leagues

Move clubs between leagues and rename them — from the top domestic division down to the foreign leagues.

Getting started

Editor step by step

Note: the editor's interface itself is in German (button labels below are quoted as they appear in the app). The editor is always reachable — even without a running game, straight from the start screen.

Open the editor

Go to Settings → Dataset (German: „Einstellungen → Datensatz") and tap „Editor".

Switch between the three tabs

The editor has three tabs of equal rank: Clubs, Players, Leagues (German: „Vereine", „Spieler", „Ligen"). There's no "League → Club → Player" hierarchy — you jump straight to whatever you want to edit.

Edit a club

Name (max. 100 characters), short code (3 letters, auto-capitalised), city, matchup name (max. 24 characters), stadium name with capacity, a badge chosen from 54 built-in designs, league assignment via dropdown, budget tier, formation, fan character, fanbase size, founding year, two kit colours from a 16-colour palette, plus rivals and fan friendships as chips.

Important: the stadium capacity is only saved if you also enter a stadium name. Custom badges can't be uploaded directly — only via a ZIP import (see below).

Edit or create a player

Name, nationality, position (goalkeeper/defender/midfielder/forward, with an optional secondary position), sliders for technique, fitness and talent (1–99), constitution, leadership and nerve (20–90), age (16–40), market value (1–200,000), salary (up to 50,000) and contract length.

Creating a new player only requires a name — salary and contract are set automatically. Deleting only works for players, not clubs or leagues, and always asks for confirmation.

Rename a league

The Ligen (Leagues) tab lists every league with its tier. A tap opens a dialog that changes nothing but the name — tier, league size and promotion/relegation are fixed. Which club plays in which league is not decided here but in the league dropdown of the club itself.

Save

There is no undo — every change is written immediately. Check your input before moving on.

⚠️

The most common trap: every league needs exactly 18 clubs, and every club needs at least 11 players. The editor doesn't warn you when moving a club throws a league out of balance — the error only shows up on import, for example as "League 'X' has N teams (expected: 18)." Count before you export.

Export & import

Export and import do not live inside the editor but on a screen of their own: Einstellungen → Datensatz → „Import / Export" (Settings → Dataset → Import / Export). So leave the editor only once you are done editing.

Export a dataset

Tap „Datensatz exportieren" (Export dataset) — this opens your device's share sheet. The resulting file is called anpfiff_datensatz.anpfiff, plain JSON in format v3, including foreign leagues.

Import a dataset

Use „Datei auswählen" (Select file) to open a .anpfiff or .json file. Anpfiff first shows a green preview with counters for leagues, teams and players.

Import only happens after you confirm — with the notice: "The current dataset will be overwritten. Your save game (season, matchdays) and your own club (squad, budget) are preserved."

Bundle badges via ZIP

A ZIP import is also possible: dataset.json plus badges/badge_*.webp, each badge up to 2 MB. The app itself never produces a ZIP — only plain JSON on export.

Back to default

The reset function restores the built-in default dataset at any time.

A closer look

The editor in action

Anpfiff editor — overview of the Clubs, Players and Leagues tabs

Editor overview

Anpfiff editor — editing a club with badge, colours and formation

Editing a club

Anpfiff editor — player list with search and position tags

Player list

Anpfiff editor — player attributes with sliders for technique, fitness and talent

Editing a player

Anpfiff editor — creating a new player

New player

Anpfiff — dataset export and import screen

Import & export

Anpfiff — import preview with counters for leagues, teams and players

Import preview

Anpfiff — error message for an invalid dataset, for example a duplicate team ID

Import error message

For tinkerers & community tools

Build your own editor

The .anpfiff data format is openly documented. You can build your own generators, converters or community tools without touching the app itself.

Format v3 overview

A dataset is either a plain JSON file or a ZIP container (the app detects both automatically from the magic bytes). At the top level sit version (2 or 3, missing means 2), exportedAt, and the lists leagues, teams, players and relations. Unknown fields are ignored on import — the format is forward-compatible with future extensions.

League
FieldTypeRules
idnumberGlobally unique, positive (0 is reserved)
namestringDisplay name of the league, max. 100 characters
levelnumberRequired, ≥ 1 — league tier (foreign leagues carry 1)
Team
FieldTypeRules
idnumberGlobally unique; on a fixed ID grid for foreign leagues
namestringMax. 100 characters
leagueIdnumberMust reference an existing League id
playersnumberAt least 11 per team
lineup, benchstringOptional, JSON-encoded ID array as a string (e. g. "[1,2,3]"). Max. 11 resp. 9 IDs, own players only, no overlap. Leaving them empty ("[]") is the normal case.
Player
FieldTypeRules
idnumberGlobally unique
teamIdnumberMust reference an existing Team id
positionIndexnumber0–3 (GK/DEF/MID/FWD)
technique, fitness, talentnumberEach 1–99
formnumber1–99 — required in the JSON, hidden in the editor UI
Relations
FieldTypeRules
teamId, relatedTeamIdnumberMust reference existing Team ids
relationTypestringrival or friend

ID grid & foreign leagues

All ids must be globally unique, and every reference (leagueId, teamId, relatedTeamId) must point to an existing object. Domestic leagues carry ids below 10 — at least two are required. Foreign leagues live exclusively in the id range 10–15, and their teams sit on a fixed id grid: either complete with 18 teams or not present at all — partially filling a foreign league is invalid.

Version rules & limits

Limits (format v3)
LimitValue
Total file size50 MB
dataset.json inside a ZIP20 MB
Leagues, maximum16
Teams, maximum308
Players, maximum10,000
Teams per leagueexactly 18
Players per teamat least 11
Domestic leagues (ids < 10)at least 2
Badges inside a ZIP2 MB each, maximum

Structure overview (v3)

{
  "version": 3,
  "exportedAt": "2026-08-01T10:00:00Z",
  "leagues": [
    { "id": 1, "name": "Liga Beispiel Nord", "level": 1 }
  ],
  "teams": [
    {
      "id": 1,
      "name": "SV Beispielstadt 1",
      "color1": 4279974507,
      "color2": 4294967295,
      "budget": 5000,
      "formation": "4-4-2",
      "leagueId": 1,
      "fixtureName": "SV Beispielstadt 1"
    }
  ],
  "players": [
    {
      "id": 1,
      "teamId": 1,
      "name": "Spieler 1",
      "positionIndex": 2,
      "technique": 60,
      "fitness": 70,
      "talent": 55,
      "form": 65,
      "age": 24,
      "marketValue": 800
    }
  ],
  "relations": []
}

Excerpt showing every required field of League, Team and Player. An importable dataset additionally needs at least 2 domestic leagues with exactly 18 teams each and at least 11 players per team — the complete minimal example accepted by the game is available as a download below ("Example: minimal").

JSON Schema (v3) Example: minimal Example: complete Example: with badges (ZIP)

Questions & answers

Limits & frequently asked questions

Is a community dataset a save game?

No. A dataset only describes leagues, clubs and players. Your save game — season, matchdays played, tables — is left untouched by an import.

Does importing run entirely offline?

Yes. Export, import and dataset processing all happen locally on your device — no server, no upload, no account required.

Can I develop a dataset together with other people?

Yes. The open format can be exported, edited and imported again, so you can share datasets and keep improving them together.

Can I import datasets the same way on iOS and Android?

The route to the file differs: on iOS, "Open with" straight from the Files app is enough. On Android, you pick the file via Settings → Import/Export inside the app itself.

Do I need programming skills to create a dataset?

No. You can edit clubs, players and leagues directly in Anpfiff. The JSON format is also openly documented for anyone building their own tools.

Get started

Make Anpfiff your own game

Download on the App Store Get it on Google Play Try it free Play in browser

Technical docs: Format v3 & downloadsAll features at a glance

DE · EN · TR · ES · PL · FR · IT