Export and import Blender node trees as Hash, JSON, or XML.
Node Runner is a Blender addon that lets you share selected nodes as text instead of sending a .blend file.
It works with all kinds of Blender node trees and makes it easy to share setups through messengers, forums, YouTube comments, or chat.
On this site you can upload your node trees for free and discover new ones.
https://node-runner.thiering.org/
Node Editor > Select Nodes > Right Click > Node Runner > Export
Gets copied to your clipboard
Node Editor > Right Click > Node Runner > Import
If the exported text is already in your clipboard:
Node Editor > Right Click > Node Runner > Paste from Clipboard
Paste this infront of your request.
You generate Blender shader node trees in "Node Runner AI JSON" format. Follow this spec exactly:
{
"nodes": {
"<Display Name>": {
"type": "<bl_idname>",
"location": [x, y],
"settings": { "<prop>": "<value>" },
"inputs": { "<Socket Name>": <value> },
"outputs": { "<Socket Name>": <value> }
}
},
"links": [
["<FromNode>.<OutputSocket>", "<ToNode>.<InputSocket>"]
],
"tree_type": "ShaderNodeTree",
"name": "<Descriptive Name>"
}
RULES:
- "type" is the Blender bl_idname (e.g. "ShaderNodeBsdfPrincipled", "ShaderNodeMath", "ShaderNodeTexNoise")
- "location" is [x, y] integers. Space nodes ~250px apart horizontally, flow left to right.
- "inputs" uses socket names as keys. Only include inputs you want to change from Blender's defaults. Omit default values.
- Scalars: "Roughness": 0.3
- Colors: "Base Color": [R, G, B, 1.0] (4-element RGBA, values 0-1)
- Vectors: "Location": [x, y, z] (3-element)
- "settings" holds node properties that aren't sockets (e.g. "operation": "MULTIPLY", "blend_type": "MIX", "noise_dimensions": "3D"). Only include non-default settings.
- "outputs" is only needed for ShaderNodeRGB and ShaderNodeValue nodes:
- RGB: "outputs": {"Color": [R, G, B, 1.0]}
- Value: "outputs": {"Value": 0.75}
- Links reference node names and socket names with a dot: "Noise Texture.Fac" means the "Fac" output of the node named "Noise Texture".
- Node names in the "nodes" dict must match exactly what you use in links.
- For ShaderNodeMath with multiple "Value" inputs, disambiguate as "Value" (first), "Value 1" (second), "Value 2" (third).
- "tree_type" should be "ShaderNodeTree" for materials or "CompositorNodeTree" for compositing.
- Do not include "blender_version" or "export_name" — those are added automatically.
- color_ramp goes under "settings", not "inputs". Format:
"settings": {"color_ramp": {"interpolation": "LINEAR", "elements": [{"position": 0.0, "color": [R,G,B,1]}, ...]}}
Common node types: ShaderNodeBsdfPrincipled, ShaderNodeBsdfGlass, ShaderNodeEmission, ShaderNodeMixShader, ShaderNodeOutputMaterial, ShaderNodeTexNoise, ShaderNodeTexVoronoi, ShaderNodeTexWave, ShaderNodeTexChecker, ShaderNodeTexImage, ShaderNodeTexGradient, ShaderNodeTexBrick, ShaderNodeMapping, ShaderNodeTexCoord, ShaderNodeMath, ShaderNodeVectorMath, ShaderNodeMix, ShaderNodeMixRGB, ShaderNodeMapRange, ShaderNodeValToRGB, ShaderNodeBump, ShaderNodeNormalMap, ShaderNodeDisplacement, ShaderNodeHueSaturation, ShaderNodeBrightContrast, ShaderNodeGamma, ShaderNodeInvert, ShaderNodeRGBCurve, ShaderNodeSeparateXYZ, ShaderNodeCombineXYZ, ShaderNodeSeparateColor, ShaderNodeCombineColor, ShaderNodeClamp, ShaderNodeFresnel, ShaderNodeLayerWeight, ShaderNodeValue, ShaderNodeRGB, ShaderNodeVectorRotate.
Output ONLY the JSON. No explanation, no code fences.
The second preview image shows a basic node setup exported with Node Runner.
The exported text can be posted anywhere text is supported, then copied and pasted directly into Blender.
BasicShaderNodeSetup__NReNqtVttu2zgQ/RWDT7sALfN+8dumty2QpkVStA+GYag2E6uVJUGSWxdB/n2HpGQrcrotuivZEDnDGZIzZw55j76iucCoQPPFAt1s042rr8qNe7tvq337Jm1dnaU5wqhvTqIGJAgvKOcMTzXlSzyl+P4BL5ZLPHRz0Wxu39VZsc6q3G3A6NSZXNw8fxndKCHxVFh59LKgmCRGCv9SIYTWRgjwzEBMFA8vk5IpwQwDOccyIZLAQy3RXBgFK1oITBMCX4kXYIa7v1+hDg28sLCFIGUkPswawjhjAmS0k1FhCaWKMm9Jgw/ZqbSQRBqivILCbNyGRysqDRVg8DgaL3ZZ02RlAbseNH0ALMdTOwjjwnvrFsC4EdRIM/b2JjvEjs9OdpgcOz4xxPjECHXySAZbMlYQZZU+W+F7d3hWlrXPFDTbfe0moZ8VkP7oGrz6bIHtMefB+zjG9EzCziT8TCLOJOfZUyPJOC5pVWXFXcBs3/LrFhKCLBX/13Wfx+OqzBq/9fCddFHpXDIqIBRikDeGVcLJGIkcnOsgFURyCugQMmyWJIKHh2hJhJLc8rBllugIJck4VcyIANoIZ+OhEbWg0EIwmGPZZZj0kTcdeKllxDKLf0VCn4jAhzR/X16/uoAdPyvzsp5cp7uqBxmeMttBDK29dlV77bzv7cABmqNovt27VVYAi1RlnrYe+3N09eKva1CNxZevO4XL3c4VbQPsdI+qssniANinDewACdCaQb0ChYUpYaDPJT39lw/4sakgTPtXEaMM0UyeTGkHhR+ZSuupRwNDaEOE1GNLzZQFBoHMC0GoUb2zM0daWmIp5cZwqxnVw9WLrkhhMoAEFFv0fUZH0fHyYYjk3846DpRLxtm/TL+7+qPL7rae8UNvcuz6CqAcQADBeMwzTI4A+YRroKyIC89df1y6u3T9/c/oFcoGT4Hgh2UFm6PyUWBgEEm4iJUgCLeSS3lM3fK/x2R8lu0D8LuPXya1wNrMjDiWUeUfCzUOpwCRfQCeODTYj46ZX+Cl17v0zvNQ+I54iRoNK+spGjXb8tuq7UbM23rvoOSCOVRqke58jRbgdVXvi8LVK3eoyrpdfW7KYnXY5UkVOPQ2y12VtlsYPNuWOzcrynQ7+1jWX5oqXbvZO1eDQZrPBq5mSdL9npffirxMN83sU+4K2MZUJDJR0zwr9ofpQYnZz1bwfwN9iVHubz1AHW8/fXZrgDRQwQdoQCEGFu47WA3l0HmZrhHW8RsY2bfCSWOPQt0RZpCFFkXhytGLKWApbfwBm0fHJxXrW4PpgG3R37H04j0ETqR65+9m9NgMu0PxYsVxhxcUgDa4cfAjlFYQHXQaF06qvodhhpt9fQupRfF+M94P8xaoBTwMgFk7D8IOVFE+8Yo2Krrkr74CWCLXBxigh38APfbYeA==
This extension requests the following permission:
Copy Node Runner Hash to clipboard
Works great. i was looking for a way to do this before, this is amazing
Very useful add-on, managing and re-using nodes can be a hustle in blender, with this add-on it's easy.