skip to main content

Project Status: Active – The project has reached a stable, usable state and is being actively developed.

fdx

fdx is a Go package and two small command line programs for working with the XML files that Final Draft writes (.fdx), and that other screenwriting programs such as Trelby, Celtx and Fade In read and write. The package parses an FDX document, writes it back as XML, renders it as Fountain-like plain text, and builds one from a Fountain document parsed by the fountain package. Its types carry JSON and YAML tags.

The package

doc, err := fdx.ParseFile("screenplay.fdx")
fmt.Println(doc.String())              // Fountain-like plain text

screenplay, _ := fountain.ParseFile("screenplay.fountain")
out := fdx.NewFinalDraft()
out.FromFountain(screenplay)
xml, _ := out.ToXML()                  // an FDX document

The programs

fdx2txt
reads an FDX file and writes plain text in a Fountain-like format.
txt2fdx
reads a Fountain file and writes an FDX file.

Install

Get a release from GitHub, or see INSTALL.md, which also covers installing from source. To use the package in a Go program:

go get github.com/rsdoiel/fdx

Build and test

You need Go 1.26.4 or later. Pandoc and GNU Make are only needed for the man pages and the website, and cmt (CMTools) only to regenerate version.go, about.md and CITATION.cff from codemeta.json.

make          # build the programs into bin/ and the man pages into man/
make test     # go test ./...
make check    # gofmt -l and go vet; rewrites nothing