Save operator templates, promote parameters by dragging, map MIDI and OSC, and navigate your networks with shortcuts. FNSTools is a collection of TouchDesigner tools you can install individually.
Most tools are free and MIT licensed. Tools that unlock with Patreon are marked Patreon.
Drag a parameter onto a component to promote it.
Read the instructions →Save an operator template and bring it into another network.
Read the instructions →Bookmark a network location and jump back to it.
Read the instructions →One switch puts FNSTools into Perform Mode. The overlays and helpers you use while building stop, the FNS button turns red, and everything your show uses keeps running.
Switch back and every tool returns as you left it. Perform Mode follows TouchDesigner's own (F1), and a show file saved with it on opens ready to go.
How Perform Mode works →85 packages, each installing on its own. Core goes in as a unit; everything else is optional. Open a tool to see what it does, tick the ones you want and take them to the picker.
Not sure what to look for? Ask the finder → Browse all 584 features →
Best matches first
No tool matches. Try fewer words, or set the filter back to All.
Shift+Esc always brings the title bar back, until you switch that safety net off.copy finds PasteFromClipboard, and the row says why it matched./ is the root, ./ where you came from and each .. a level up; Right drills into a row and Left backs out.Alt+S saves a command with its values as a preset row, which runs on Enter without prompting.Ctrl+D to lead their tier, and hide the ones you never use with Ctrl+H.Alt+Up and Alt+Down cycle through the queries you have run before.~ lists the public methods of a COMP's extensions and calls them with the arguments you type.Ctrl+Shift and an arrow key splits on that side and drops you into the component; the same key closes the pane it opened.Ctrl+Shift+F brings TouchDesigner's own palette tab to the front and puts the cursor in an empty search field; the key is rebindable in HotkeyManager.* or ? match as patterns from the front of a name, so a wildcard can only widen the search.- takes its matches out of the results.Ctrl+Left and Ctrl+Right to jump by word.FNS_AltSelect, so a Find or a findChildren(tags=...) sweep can list them.Alt while placing a generator TOP such as a Noise, Circle or Rectangle onto a chain, and it comes in set to combine with its input.Alt held gets a resolution expression that follows the parent.Project shortcut.parent.Project is found, the TOP uses the resolution you set on AutoRes.Ctrl+Alt by default) while placing an operator marked >>> in the OP Create dialog, and your template goes down in its place with the wiring kept.Alt over a COMP in the pane-bar path to see its parent shortcut, global shortcut and internal operators.Ctrl to see where each iop points and every custom parameter with its value; press Ctrl again to poll the values.ext.TimelineToolsExt.AcceptsDrop(items), with the signature intact.Alt+V pastes the image on the clipboard into the current network, at the mouse, with three ways to paste on the keys 1, 2 and 3.noise*, *out? and [ab]lur* match whole names as in TouchDesigner's pattern fields, and a leading ^ inverts the match.Ctrl while dropping to set the name, label, range, clamping and default before the parameter is created.Alt+X promotes the parameter under the mouse and Alt+\ opens it in the Component Editor, with nothing to select or drag.Ctrl+Alt drop adds an operator to the parent, or to a parent in the path bar, as an iop.self.evalSpeed and self.parSpeed for every custom parameter.onParSpeed runs when the Speed parameter changes, with matching names for pulses, parameter groups and sequences.CustomParHelper.Float and CustomParHelper.Menu create custom parameters from __init__, with page, range and help text.@CustomParHelper.onPar('Speed') binds any method to a parameter, and a mistyped parameter name is reported in the log.NoNode.RegisterKeyboardShortcut binds a key such as ctrl.k to an extension method, and DeregisterKeyboardShortcut removes it.#AT typed as an expression becomes absTime.seconds.#AT * 0.2.#@noise1.par.amp becomes op('noise1').par.amp.#! becomes the closest parent shortcut, and #!! the same with .par after it.#@! and #@~ turn the parameter you are typing in into a custom parameter on its parent, linked by a bind or an expression.noise* or level1 level2, and a parameter changed on one is written to the others.t? seed to keep transforms and seeds independent.Ctrl+Shift+C copies a reference to the selected operator, ready to paste into an expression.P with the same modifiers, no dragging needed.Alt+Shift+R, gives every parameter on the selected operator's open page a random value within its range.Alt+R, or drop it on the button, to randomize just that one.Ctrl+Shift+R puts the hovered parameter back to its default; Ctrl+right-click or Ctrl+Shift+Alt+R resets the whole page.Alt while picking to write it to every TOP in the current network.Ctrl+0, the toolbar button or quick-launch pulses the reset of every matching operator in the project.^*/presets* for components that should never be reset; with Externalize Tables on, it follows you from project to project.Ctrl+E on a COMP opens its first promoted extension in the external editor TouchDesigner is set to use; on a COMP without one nothing happens.Ctrl+Shift+E writes the DAT you are on to a file named after it, and from then on the DAT and the file stay in sync both ways.Ctrl+Shift+Alt+E asks for the file's name and path before syncing.op.TDXMap resolves from anywhere, and keeps working with the toolkit removed.P = P + N * 0.1, and read any point attribute of the input by its name.vec3 offset = N * 0.2 carry over to every later line, so a long calculation splits into readable steps.op.FNS_CONSOLE opens and closes the console, lists and shows tabs, and registers a tab without a host.op.FNS_HUBREGISTRY.Open(tab='navbar') opens the hub on a tab by its canonical name, contributed tabs included.*, as a Hub tab.Ctrl+Shift+F switches to the stock Palette tab before focusing its search field; other tools can call ShowTab('palette') the same way.Every package has its own page, and the docs are searchable, open the documentation →
One container goes into your project, you pick the tools from there, and only those get downloaded. Start from a download or from the picker on this site; either way, the updater keeps it current.
Drag FNSTools.tox into the root of a project. It is about 150 KB and
arrives empty: the container you drop is where your tools will live.
Then pulse Pick Tools and the picker opens inside TouchDesigner. Browse by category, follow any card through to its docs, and review the plan before anything is written to your project.
DownloadIt downloads exactly the packages you ticked, plus the core registries they need, and verifies every file against the release manifest with sha256 before anything is installed.
Nothing else is written.
On the very first run it fetches the catalogue before it can show you anything, and says so while it does.
The same picker is on this site. Tick your tools, copy the one line it gives you, and paste it into the Textport of an open project.
No download: the line fetches the container and your picks together and places the container in your project for you.
Choose tools online →It carries only the names you ticked. Release, URLs and hashes are read from the published manifest at paste time, so a line you copied earlier still installs the current release.
It fetches the core registries, your selection and the container, verifies every file with sha256 before writing anything, then loads the container into the network you are in and hands it the selection to install.
Each package carries its own version, and the updater compares it against the published one. Update the tools you use, leave the rest alone, and keep your settings across the swap.
How updates workPreferences go into one aggregated JSON in your user palette, outside the project file, so the way you set a tool up follows you into the next project, and survives the next update.
MIDI and OSC maps are the deliberate exception: they save into the project folder, so they travel with the show.
Settings are preserved when a package is replaced. And the registries are promoted masters you can clone, so your own tools can sit on the toolbar, nav bar or OP menu too. How settings persistence works →
Save the project and set it as your startup file in
Preferences → General → Startup File Mode. Every new project then opens
with your tools already in it.
Clipboard image paste is not available on macOS. Where the docs
say Alt, press Cmd. Exceptions are called out per tool.
Alt-right-click (or Alt-middle-click) any toolbar icon to
open that tool's page on this site. Option on macOS.
FNSTools ships an agent skill: a reference to every installed package, its promoted methods, quick-launch commands, hotkeys and settings, generated from the release you have. Run Install agent skill from the command palette and Claude Code, or any agent that reads the Agent Skills format, finds it in the project. How it works →
The developer kit, FNSTools-DevKit.zip, holds the eleven registries, each as its own tox, with a README: the toolbar, the pane bars, the menus, the palette, the timeline, the settings file and the other surfaces a tool publishes into. Drop the ones your tool needs into a development project and build against them without installing the toolkit. It has no updater: take the kit of the release you target. Each registry's contract is on its page in the docs.
Browse all 85 packages by category, read what each one does, and tick the ones you want. You get a single line to paste into the Textport. It installs that selection and nothing else.
Most tools are free and MIT licensed, including for commercial work. No account is needed.
Tools marked Patreon unlock with a Patreon membership at the tier each tool names (Base, Pro or Coaching) or a Gumroad licence key. Install and update them through the same picker.
See the Patreon tools and licence details →A full walkthrough with the TouchDesigner team on InSession. Recorded on an earlier release; some interfaces have changed.
Find setup instructions, shortcuts and examples for each tool. Search the docs or start with one of these:
Patreon memberships help fund development and unlock the Patreon tools. For questions, join the Discord. For bugs, open a GitHub issue.
Project management and MIDI mapping, available separately.
9 tools by other creators that pair well with FNSTools, made and maintained by them.
FNSTools is made by Dan Molnar, a Berlin-based artist and developer working as Function Store, with a few community contributors credited below. More are welcome, on GitHub or Discord. The tools grew out of building installations and live systems in TouchDesigner; the rest of that work is on his portfolio site.
FNSTools includes open-source tools and code I adopted and adapted for this toolkit. These are their original authors, along with people who helped test it.
I also learned a lot from reading these components.
by PlusPlusOneGmbHThe palette search bar that is hard to work without once you have it, based on TD-SearchPalette.
based on the work of Yea ChenThe OP Create dialog filters, and the software all of this sits on.
by Greg HermanovicPaste an image straight into a network.
by DotSimulate and Lake HeckamanFind operators in the OP Create dialog by their initials.
by DotSimulateBookmark spots in a project and jump straight back to them.
by Alex GuevaraA bar above every operator showing its cook time and GPU memory, from cook_bar.
by Anton HeestandThe people who used all of this while it was still sharp around the edges.
by Acrylicode and kim0slice