Brushfactory Open Brushfactory

Brushfactory › Formats › .kpp

What is a .kpp file?

A .kpp file is a Krita brush preset — and the neatest trick in any of these formats: it is a PNG image. Rename one to .png and any image viewer will open it and show you the preset's thumbnail.

What's inside one

The picture

An ordinary PNG of the preset thumbnail. That is what makes the file browsable — the settings ride along inside it.

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 → Photoshop, Krita → Procreate, Krita → Clip Studio Paint.

Into Krita: Photoshop → Krita, Procreate → Krita, Clip Studio Paint → 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 — brush formats are not interchangeable. Brushfactory reads the .kpp into a universal schema and writes a native brush for Photoshop, Procreate, Clip Studio Paint or Krita, keeping the tip imagery, grain, spacing and pressure curves.

Everything on this page is taken from the reader that parses the format in Brushfactory itself (brushfactory/formats/kpp.py), which was built against the applications' own source and against real files, not from a specification document.