If you have ever searched can you use Procreate brushes in Krita, or convert procreate brushes to affinity, or how to import brushes into ibisPaint, you have run into the same wall from four directions. This is the map of the wall.
Every brush is two things
Open any brush file from any app — .brush, .brushset, .abr, .sut,
.kpp, .apexobrush — and you find the same two components:
The textures. A shape, which is the stamp that gets repeated along your stroke, and usually a grain, which is the paper or bristle texture showing through it. These are images. Nothing more.
The configuration. Spacing, scatter, rotation, size and opacity response to pressure and tilt, taper rules, blending behaviour, wet and smudge parameters.
That split is the whole story. Textures are universal. Configuration is not.
Why configuration cannot travel
A configuration is not a description of a brush. It is a set of inputs to one specific renderer.
When Procreate says spacing is 12%, that number means something inside Procreate’s stroke engine. Krita’s spacing of 12% means something inside Krita’s. The two engines disagree about how a stamp is spaced, how opacity accumulates within a single stroke, and what pressure 0.5 should look like. There is no conversion factor, because there is no shared unit — only a number that happens to land close on one test stroke and drift apart on every other.
Pressure curves are the clearest case. Two apps can both expose “pressure → size”, and still differ in how they smooth raw stylus input, whether they accumulate alpha per stamp or per stroke, and how they taper the end of a line. Copy the curve across and you have copied a shape on a graph, not a feel.
A converter can move your textures. Nothing can move the engine they were tuned against.
What survives, by format
| Format | App | Container | Textures out? | Config out? |
|---|---|---|---|---|
.brush / .brushset |
Procreate | ZIP | Yes — PNGs inside | No, binary plist |
.abr |
Photoshop | Binary | Yes, with a reader | Partially |
.kpp |
Krita | PNG with metadata | Yes | Krita only |
.bundle |
Krita | ZIP | Yes | Krita only |
.gbr / .gih |
GIMP | Binary | Yes | Minimal by design |
.sut |
Clip Studio | Proprietary | Not practically | No |
.apexobrush |
Apex Olira | ZIP | Yes | Yes, on all three platforms |
The pattern: ZIP-based formats let you get your textures back; proprietary binary formats do not. That is the only question worth asking about a format before you invest years of work in it.
The three honest routes
Extract and rebuild. Unzip the source file, pull out the shape and grain PNGs, import the shape as a brush tip in the destination app, put the grain in as a texture, then dial the feel back in. This works between almost any pair of apps and is what every real “converter” does under the hood, minus the last step. We wrote it up in detail for Procreate to Krita.
Re-buy. Buy the pack again in the destination app’s format, if the artist made one. Most did not.
Do not move. Stay where your library is, and accept that the library now chooses your device for you. This is the one most people pick without ever deciding to.
Why nobody is building the converter
There is no technical mystery here. Any competent developer could write a tool
that extracts textures from a .brushset and emits a .kpp this weekend. The
reason it does not exist as a maintained product is that nobody in the market
is incentivised to make leaving easy.
Procreate is not going to publish a guide for exporting to a rival. Krita is
free software with no obligation to reverse-engineer a competitor’s binary
format, and its own resource pages have rotted to the point where several
brush-packs URLs 404. Clip Studio runs the strongest asset marketplace in the
category and has every reason to keep .sut where it is. Infinite Painter has
no blog at all.
The result is a category where your brush library is the switching cost, and everyone in it is quietly fine with that.
What we did instead
We build a cross-platform app, so the problem showed up on day one as an internal one: the same person opens an iPad in the morning and an Android tablet at night, and the brushes have to be there both times.
The requirement we set for .apexobrush was that a single file has to import
identically on iPadOS, macOS and Android — same textures, same curves, same
resulting stroke. It is an archive holding the stamp textures and the brush
configuration together, and there is nothing platform-specific inside it. You
download it once, from us or from anywhere, and import it wherever you happen
to be working.
That solves exactly one problem: it means our format never becomes the reason you cannot change device. It does not make your existing Procreate library portable, and we are not going to pretend otherwise.
The honest summary is the one at the top. Textures move. Configuration does not. Choose formats accordingly, keep the source PNGs of anything you make yourself, and treat any brush library locked in a proprietary binary as something you are renting.
Free .apexobrush packs are in the brush studio — no account, no
trial clock. If you found something in this piece that is out of date,
tell us and we will correct it.