ComfyUI Node

FF Text

It's called FF Text, but it's really a timestamp node

By fredhopp·Created about a year ago·Updated 12 months ago· 0
FF Text
    • text
    format_string%yyyy-MM-dd HH:mm:ss%

    Let's get the naming out of the way: "FF Text" sounds like a general-purpose text node, and it is not one. It takes a format string, reads the current date and time, and spits out a formatted string. That's the whole job. There are no static labels, no concatenation, no prompt templating here. What it is genuinely good for is one very common ComfyUI need: stamping the moment of generation onto something, so a filename never silently overwrites your previous output.

    How it works

    You give it one input, format_string (a multiline text box, default %yyyy-MM-dd HH:mm:ss%), using FF-Text's own %token% syntax:

    • %yyyy% → 4-digit year, %yy% → 2-digit year
    • %MM% → month, %dd% → day
    • %HH% → 24-hour, %mm% → minutes, %ss% → seconds

    The node scans for %...% blocks, converts them to Python's strftime codes, then formats the current time. Default input gives you something like 2026-08-16 14:23:45. The important implementation detail: it returns NaN from IS_CHANGED, so it always re-executes on every run. You get the time at generation, never a cached value from an earlier queue - which is exactly what you want from a timestamp.

    What you wire it into

    One output: text (STRING). Feed it into any string input on the canvas - the obvious one is Save Image's filename_prefix, so your outputs carry a unique timestamp and you never clobber yesterday's file. It also works as a run-time note into a display/text node, or as part of a dynamic prompt if you like your prompts timestamped. For filename stamping, that's basically the whole use case, and it does it with zero extra dependencies.

    Gotchas

    • It can't emit arbitrary text. Need a node that just holds "Hello world" or pastes a paragraph? Use a plain text/ShowText node. This one formats time, period.
    • Case matters and it's easy to flip. %MM% is the month, %mm% is minutes - the opposite of what your muscle memory from other tools might guess. And %yyyy% vs %yy% is 4-digit vs 2-digit year.
    • Watch your literal percent signs. Only %...% blocks get converted; everything else passes straight to strftime, and an unpaired % in ordinary text (say, "50% off") raises a ValueError that turns the node red. Keep stray percents out of the format.
    • It's 24-hour with no AM/PM token. Fine for filenames, worth knowing if you wanted a 12-hour clock.
    • Colons vs Windows. The default %HH:%mm:%ss% embeds : in the output - ComfyUI's prefix field is fine with that, but Windows filenames are not. If you're stamping filenames on Windows, use %yyyy-MM-dd HH-mm-ss% (dashes for the time part) or saving will fail.

    Install

    Part of fredhopp/comfyui-flipflopnodes - ComfyUI Manager (search "comfyui-flipflopnodes") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/fredhopp/comfyui-flipflopnodes.git
    

    Restart ComfyUI. No models, and the declared requirements.txt deps (pillow/numpy/torch/piexif) are either already in ComfyUI or unused - this node only needs the Python standard library's datetime.

    It's a tiny utility from a tiny pack, and "one light trick done well" is the right way to think about it. If you save files without timestamps and keep overwriting them, this is a five-second fix. If you needed a real text node, this isn't it - and knowing the difference is half the battle.

    CategoryFlipFlop/Text

    Inputs (1)

    NameTypeDefaultDescription
    format_stringSTRING%yyyy-MM-dd HH:mm:ss%

    Outputs (1)

    NameTypeDescription
    textSTRING