Open Brushfactory

Brushfactory Formats .kpp

What is a .kpp file?

A .kpp file is a Krita brush preset. Uniquely, it functions as a standard PNG image. Rename one to .png and most image viewers will display the preset's thumbnail.

What's inside one

The picture

A standard PNG of the preset thumbnail. The brush settings are embedded within the image data.

The preset chunk

A compressed PNG text chunk holding the settings as XML: the brush engine, its parameters, and one block per sensor curve.

The version chunk

Usually 5.0. The value matters: a preset marked 2.2 makes Krita skip its embedded resources entirely.

Embedded resources

Tip images and patterns live inside the XML as base64 text, each with an md5 checksum, so a .kpp is self-contained. A .bundle is simply a zip of many .kpp files.

A default curve is written as no curve at all. Krita omits the <curve> element when a sensor's response is the straight 0,0–1,1 line. An absent curve therefore means linear, not unset, and reading it as missing data is how a converted brush ends up with no pressure response at all.

How to open it

Krita imports .kpp through Settings › Manage Resources…, or you can drop the file into your Krita resource folder and restart.

Converting .kpp

Out of Krita: Krita to Photoshop, Krita to Procreate, Krita to Clip Studio Paint, Krita to GIMP, Krita to MediBang.

Into Krita: Photoshop to Krita, Procreate to Krita, Clip Studio Paint to Krita, GIMP to Krita.

What survives each trip, and what does not, is set out on the fidelity report.

Common questions

How do I open a .kpp file? Krita imports .kpp through Settings › Manage Resources…, or you can drop the file into your Krita resource folder and restart.
Can a .kpp brush be used in another app? Not directly, because brush formats are not interchangeable. Brushfactory reads the .kpp file into a universal schema and writes a native brush for Photoshop, Procreate, Clip Studio Paint or GIMP. For MediBang, it provides the brush tip and a settings sheet. The brush tips, grain, spacing, and pressure curves transfer as native settings.

The information on this page is derived directly from Brushfactory's own format parser (brushfactory/formats/kpp.py), which was built against the applications' own source and against real files, not from a specification document.