bl_info → blender_manifest.toml

Blender 4.2 replaced add-ons with extensions. Paste your old __init__.py below and get the manifest it needs — plus the code changes a manifest can’t express. Everything runs in your browser: nothing is uploaded, nothing is stored, no sign-up.

This converter is free and stays free. So is Card Normals, which makes hair, foliage and grass cards shade as one volume. If you also card hair, Hair Cards — hair curves to game-ready cards in one click, $29 is in development.

1. Paste your __init__.py

One question, if you have ten seconds

Which repetitive Blender chore would you pay to never do again? One sentence is plenty.

Answer on GitHub → (no newsletter, no follow-up)

What changed in 4.2, briefly

Legacy add-onExtension (4.2+)
bl_info dict in __init__.pyblender_manifest.toml file
version as a tupleversion as a "1.4.2" string
category, one stringtags, a list from a fixed vocabulary
Licence unstatedlicense required, SPDX identifiers
Plain import my_moduleRelative from . import my_module
Any Blender versionblender_version_min ≥ 4.2.0
Network access unannouncedDeclared under [permissions]

Official reference: Blender Manual — Extensions. Tags come from a fixed vocabulary and add-ons must be GPL-3.0-or-later; the full tag list and every validation message are on one page.

What this does and doesn’t do

It reads your bl_info and writes the manifest fields it can honestly derive. Where the manifest needs something bl_info never carried — a licence, a contact email, a tagline under 64 characters — it fills in a marked placeholder and tells you, rather than guessing and leaving you with a file that looks finished but is wrong. It does not rewrite your Python, and it does not build the zip.