Your universe, your rules
Anpfiff deliberately ships with fictional clubs and players — real league structures, club names and badges are protected by licensing rights and aren't available to any single app. Instead of leaving a gap, Anpfiff turns that into a core feature: a built-in editor that lets you shape clubs, players and leagues the way you know them, plus an open data format the community uses to build and share its own datasets.
What you can edit
Name, short code, city, badge, kit colours, formation, fan character, rivals and fan friendships — make every club your own.
Name, nationality, position, technique, fitness, talent and more. Contract, market value and salary are covered too.
Move clubs between leagues and rename them — from the top domestic division down to the foreign leagues.
Getting started
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.
Go to Settings → Dataset (German: „Einstellungen → Datensatz") and tap „Editor".
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.
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).
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 (up to 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.
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.
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.
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) is preserved."
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.
The reset function restores the built-in default dataset at any time.
A closer look
Editor overview
Editing a club
Player list
Editing a player
New player
Import & export
Import preview
Import error message
For tinkerers & community tools
The .anpfiff data format is openly documented. You can build your own
generators, converters or community tools without touching the app itself.
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.
| Field | Type | Rules |
|---|---|---|
| id | number | Globally unique |
| name | string | Display name of the league |
| Field | Type | Rules |
|---|---|---|
| id | number | Globally unique; on a fixed ID grid for foreign leagues |
| name | string | Max. 100 characters |
| leagueId | number | Must reference an existing League id |
| players | number | At least 11 per team |
| Field | Type | Rules |
|---|---|---|
| id | number | Globally unique |
| teamId | number | Must reference an existing Team id |
| positionIndex | number | 0–3 (GK/DEF/MID/FWD) |
| technique, fitness, talent | number | Each 1–99 |
| form | number | 1–99 — required in the JSON, hidden in the editor UI |
| Field | Type | Rules |
|---|---|---|
| teamId, relatedTeamId | number | Must reference existing Team ids |
| relationType | string | rival or friend |
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.
| Limit | Value |
|---|---|
| Total file size | 50 MB |
| dataset.json inside a ZIP | 20 MB |
| Leagues, maximum | 16 |
| Teams, maximum | 308 |
| Players, maximum | 10,000 |
| Teams per league | exactly 18 |
| Players per team | at least 11 |
| Domestic leagues (ids < 10) | at least 2 |
| Badges inside a ZIP | 2 MB each, maximum |
{
"version": 3,
"exportedAt": "2026-08-01T10:00:00Z",
"leagues": [
{ "id": 1, "name": "Division One" }
],
"teams": [
{ "id": 100, "name": "FC Example", "leagueId": 1 }
],
"players": [
{
"id": 1000,
"teamId": 100,
"name": "John Smith",
"positionIndex": 2,
"technique": 60,
"fitness": 70,
"talent": 55,
"form": 65
}
],
"relations": []
}
Questions & answers
No. A dataset only describes leagues, clubs and players. Your save game — season, matchdays played, tables — is left untouched by an import.
Yes. Export, import and dataset processing all happen locally on your device — no server, no upload, no account required.
Real names, badges and league structures are protected by licensing rights. That's why Anpfiff ships with fictional clubs — the editor is how you turn that into your own, familiar universe.
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.
Only share content you created yourself. Real names, logos or badges belonging to others don't belong in datasets you share with other people.
Get started
Technical docs: Format v3 & downloads • All features at a glance
DE · EN