# Forsyth-Edwards Notation

Forsyth-Edwards Notation of FEN is een standaard voor het beschrijven van spelposities (stellingen) bij het schaken, met behulp van ASCII-karakters.
FEN is gebaseerd op een systeem dat in de 19e eeuw werd ontwikkeld door de Schotse journalist David Forsyth. Dit systeem is door Steven J Edwards iets uitgebreid om het geschikt te maken voor gebruik door computerprogramma's.

## Eigenschappen en gebruik

De standaard voorziet niet in uitbreidingsmogelijkheden. Ook zijn er geen controlemechanismen om na te gaan of de gegeven stelling volgens de FIDE-regels kan ontstaan uit de beginstelling en om gecorrumpeerde gegevens te corrigeren of onderscheppen. Zo is een tekenreeks mogelijk waarbij de zwartspeler begint met de partij, wat volgens de standaard schaakregels niet kan. FEN laat zelfs stellingen met grove afwijkingen toe, zoals pionnen op de bovenste of onderste rij, maar deze zullen gewoonlijk door schaakprogramma's en schakers geweigerd worden. Een voordeel van de ontbrekende integriteitscontrole is, dat sommige schaakvarianten en puzzels, zoals schaak 960 en het achtdamesprobleem in FEN gecodeerd kunnen worden.
Enkele aspecten van de zetten en het partijverloop zijn wel op te maken uit FEN – zie onderstaande definitie – maar FEN geeft posities weer en is niet geschikt om zettenreeksen vast te leggen. Daarvoor wordt veelal de PGN-notatie gebruikt, waar de FEN in opgenomen kan worden. PGN beschrijft normaal gesproken een zettenreeks vanuit de beginpositie van een partij, maar bij partijfragmenten of analyses is niet altijd bekend door welke zetten de positie bereikt is en bij schaakproblemen is dat gewoonlijk zelfs irrelevant. Als een PGN-zettenreeks niet start bij de beginstelling, moet er een SetUp-tag zijn met de waarde 1 en moeten er ook gepaarde FEN-tags zijn met daartussen de FEN-notatie van de opstelling.
Een bestand dat enkel uit een of meer FEN-posities bestaat, wordt bij voorkeur aangeduid met de extensie .fen.
Met FEN was het mogelijk om een schaakstelling telegrafisch door te geven. Het formaat is compact, passend bij het telegram, een kostbaar medium waarbij de prijs afhing van de lengte van het bericht. De opbouw uit leesbare tekens en spaties is vanuit het standpunt van databasebeheer niet optimaal. Zo wordt de beginstelling weergegeven in 56 ASCII-tekens van elk acht bits, in totaal 448, terwijl het in veel minder bits kan. Ook is de informatie hier en daar redundant, bijvoorbeeld de vier letters voor de rokademogelijkheden. Het formaat is echter goed te comprimeren.
Voor de eindgebruiker is de leesbaarheid een voordeel en FEN is de facto een standaard. Schakers, programma's, databases en websites gebruiken het formaat voor analyse en uitwisseling van stellingen.

## Definitie

Een FEN-record definieert een partijstelling in één regel met uitsluitend ASCII-karakters.
Een FEN-record bestaat uit een tekenreeks van variabele lengte. Deze heeft zes velden zonder expliciete namen, gescheiden door een spatie. De velden geven aan: de plaats van de stukken, de kleur die aan zet is, mogelijkheden voor rokade of en passantslag, een halfzetten-teller en het aantal gespeelde zetten. Meer specifiek:
* Positie: Elke rij wordt beschreven, te beginnen met de bovenste rij gezien vanuit wit, dat is dus rij 8. De rijen worden gescheiden door een slash ("/"). Binnen elke rij wordt de inhoud van elk veld beschreven vanaf de a-lijn aan de linkerkant. Witte stukken worden aangegeven met hun Engelse aanduiding in hoofdletters ("KQRBNP"), zwarte stukken krijgen kleine letters ("kqrbnp"). Het aantal opeenvolgende lege velden op een rij wordt aangegeven met een cijfer dat van "1" tot en met "8" kan lopen.
* Aan zet: "w" betekent wit aan zet, "b" betekent zwart aan zet.
* Rokades: "-" geeft aan dat geen rokade meer mogelijk is. Anders wordt één of meer van de volgende karakters gebruikt, in deze volgorde: "K" (wit kan op de koningsvleugel rokeren), "Q" (wit kan op de damevleugel rokeren), "k" (zwart kan op de koningsvleugel rokeren), "q" (zwart kan op de damevleugel rokeren).
* En passant: als een pion bij de laatste zet twee velden opgespeeld is, wordt altijd het veld aangegeven waar een vijandelijke pion en passant naartoe zou kunnen, zelfs als er geen pion in de buurt is. Na de zet e2-e4 wordt dus "e3" aangegeven. Vanzelfsprekend is het cijfer altijd 3 als wit heeft gezet en 6 als zwart heeft gezet, terwijl "-" aangeeft dat er niet en passant kan worden geslagen.
* Halfzetten-teller: het aantal halfzetten (ply's) sinds de laatste zet waarbij een pion is gezet of een stuk geslagen. Dit wordt gebruikt om te bepalen of een remiseclaim mogelijk is in verband met de vijftigzettenregel.
* Volledige zetten: het aantal volledige zetten in de hele partij. Dit begint met "1" en wordt opgehoogd na elke zet van zwart. Uit deze informatie is op te maken of een partij afgebroken mag worden onder de overeengekomen regels; afbreken is echter niet meer in zwang doordat een afbrekende speler de uit te spelen stelling met behulp van een computer kan analyseren.

## Voorbeelden

| 8 | | | | | | | | |
| 7 | | | | | | | | |
| 6 | | | | | | | | |
| 5 | | | | | | | | |
| 4 | | | | | | | | |
| 3 | | | | | | | | |
| 2 | | | | | | | | |
| 1 | | | | | | | | |
| | a | b | c | d | e | f | g | h |
| | rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 | rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 | rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 | rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 | rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 | rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 | rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 | rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 |
| 8 | | | | | | | | |
| 7 | | | | | | | | |
| 6 | | | | | | | | |
| 5 | | | | | | | | |
| 4 | | | | | | | | |
| 3 | | | | | | | | |
| 2 | | | | | | | | |
| 1 | | | | | | | | |
| | a | b | c | d | e | f | g | h |
| | rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 | rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 | rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 | rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 | rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 | rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 | rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 | rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 |
| | Wit geeft mat in 2, Jac. Haring, 1977. Sleutelzet: zie voetnoot. | Wit geeft mat in 2, Jac. Haring, 1977. Sleutelzet: zie voetnoot. | Wit geeft mat in 2, Jac. Haring, 1977. Sleutelzet: zie voetnoot. | Wit geeft mat in 2, Jac. Haring, 1977. Sleutelzet: zie voetnoot. | Wit geeft mat in 2, Jac. Haring, 1977. Sleutelzet: zie voetnoot. | Wit geeft mat in 2, Jac. Haring, 1977. Sleutelzet: zie voetnoot. | Wit geeft mat in 2, Jac. Haring, 1977. Sleutelzet: zie voetnoot. | Wit geeft mat in 2, Jac. Haring, 1977. Sleutelzet: zie voetnoot. |
| 8 | | | | | | | | |
| 7 | | | | | | | | |
| 6 | | | | | | | | |
| 5 | | | | | | | | |
| 4 | | | | | | | | |
| 3 | | | | | | | | |
| 2 | | | | | | | | |
| 1 | | | | | | | | |
| | a | b | c | d | e | f | g | h |
| | 4r3/2P3R1/R1N2k1P/5Np1/K1p1p3/1pr5/3P4/Bn3Q2 w - - 0 1 (opgave) 4r3/2P3R1/R1N2k1P/5Np1/K1pPp3/1pr5/8/Bn3Q2 b - d3 0 1 (na de sleutelzet) | 4r3/2P3R1/R1N2k1P/5Np1/K1p1p3/1pr5/3P4/Bn3Q2 w - - 0 1 (opgave) 4r3/2P3R1/R1N2k1P/5Np1/K1pPp3/1pr5/8/Bn3Q2 b - d3 0 1 (na de sleutelzet) | 4r3/2P3R1/R1N2k1P/5Np1/K1p1p3/1pr5/3P4/Bn3Q2 w - - 0 1 (opgave) 4r3/2P3R1/R1N2k1P/5Np1/K1pPp3/1pr5/8/Bn3Q2 b - d3 0 1 (na de sleutelzet) | 4r3/2P3R1/R1N2k1P/5Np1/K1p1p3/1pr5/3P4/Bn3Q2 w - - 0 1 (opgave) 4r3/2P3R1/R1N2k1P/5Np1/K1pPp3/1pr5/8/Bn3Q2 b - d3 0 1 (na de sleutelzet) | 4r3/2P3R1/R1N2k1P/5Np1/K1p1p3/1pr5/3P4/Bn3Q2 w - - 0 1 (opgave) 4r3/2P3R1/R1N2k1P/5Np1/K1pPp3/1pr5/8/Bn3Q2 b - d3 0 1 (na de sleutelzet) | 4r3/2P3R1/R1N2k1P/5Np1/K1p1p3/1pr5/3P4/Bn3Q2 w - - 0 1 (opgave) 4r3/2P3R1/R1N2k1P/5Np1/K1pPp3/1pr5/8/Bn3Q2 b - d3 0 1 (na de sleutelzet) | 4r3/2P3R1/R1N2k1P/5Np1/K1p1p3/1pr5/3P4/Bn3Q2 w - - 0 1 (opgave) 4r3/2P3R1/R1N2k1P/5Np1/K1pPp3/1pr5/8/Bn3Q2 b - d3 0 1 (na de sleutelzet) | 4r3/2P3R1/R1N2k1P/5Np1/K1p1p3/1pr5/3P4/Bn3Q2 w - - 0 1 (opgave) 4r3/2P3R1/R1N2k1P/5Np1/K1pPp3/1pr5/8/Bn3Q2 b - d3 0 1 (na de sleutelzet) |

## FEN en EPD

Een afleiding en uitbreiding van FEN is Extended Position Description (EPD). Deze standaard is bedoeld voor het uitwisselen van gegevens en opdrachten tussen schaakprogramma's en daarnaast voor databases en bibliotheken van schaakopeningen; eindgebruikers krijgen deze standaard zelden te zien. Deze is ontwikkeld door John Stanback en Steven Edwards en werd voor het eerst gebruikt door het schaakprogramma Zarkov.
De eerste vier velden komen overeen met die van FEN, maar EPD is veel uitgebreider en voorziet in tegenstelling tot FEN wel in uitbreidingsmogelijkheden. Veld 5 en 6 van de FEN-standaard kunnen bij EPD aangegeven worden in de variabelen hmvc (halfmove clock) en fmvn (fullmove number), maar ze zijn optioneel. Ze zijn vaak weggelaten omdat ze voor computeranalyse geen belang hebben en wel ruimte innemen. Een bestand met enkel EPD-gegevens krijgt bij voorkeur de extensie .epd.