Date String
Timestamp your filenames without the 'what day is it' math
- text
The dumbest problem in ComfyUI is naming your outputs so you can find them later. Save Image prefixes with a filename you typed once, and a week of runs all pile into the same folder with different random suffixes. Date String stamps the current date (and optionally time) onto a base text string, so every run lands in a fresh, meaningful slot - my_workflow/2026-08-27/00001.png instead of my_workflow/whatever_00001.png. It's the kind of node you dismiss until you've lost an afternoon hunting for yesterday's best run, and then it's the first thing you install.
Mechanically it's a string builder: it takes text, appends the date via separator, and appends the time if include_time is on. The details are in the two formatting inputs:
date_format-YYYY-MM-DD(default),YYYY_MM_DD,YYYY/MM/DD,DD-MM-YYYY,YYYY-MM,YYYYMMDD,none, orcustomfor an arbitrary strftime pattern incustom_date_format.include_time+time_format-HH-MM-SS,HH-MM(default),HH,HH:MM:SS, orcustomstrftime.
The separator is the sneaky-powerful one. separator joins text / date / time, and the pack's own tooltip is worth quoting because it's the whole trick: "/ creates subfolders in a save path; use _ or - for a flat name." With text = "sweep", separator = "/", and YYYY-MM-DD, you get sweep/2026-08-27 - a folder per day, which is exactly how you want a Save Image prefix to behave. With separator = "_" you get sweep_2026-08-27, one flat filename. Same node, two totally different organizational schemes, and it's all just the character between the parts.
Output is a single text STRING, wired into any Save Image / Save Video filename_prefix (via convert-to-input if the widget isn't already a socket). No optional inputs, no list handling, nothing to configure after setup. It computes on every run, so the timestamp reflects the run, not the last time you edited the workflow.
Installing
Ships in Kinburg-Nodes: ComfyUI Manager → search "Kinburg-Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kinburg/Kinburg-Nodes
# restart ComfyUI
The README calls this one out explicitly: "The Image Compare and Date String nodes need nothing extra." No models, no pip installs, no llama-cpp anything. It's a pure utility in a pack that otherwise demands real infrastructure, which makes it one of the few nodes in the pack you can hand to someone who only wants the timestamp.
Gotchas
The only real trap is the separator, and it's also the feature: forget that / creates subfolders and you'll start generating a folder tree inside your output directory. If you want one flat file, reach for _. And if you're stamping a filename that goes through Windows, avoid : in the time format - HH:MM:SS produces colons, which Windows refuses in filenames. The HH-MM default dodges that; use it unless you're on a filesystem that doesn't care.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Base text/path; the date (and time) is appended via 'separator'. Can be empty. | |
| date_format | COMBO | YYYY-MM-DD | 8 options: YYYY-MM-DD, YYYY_MM_DD, YYYY/MM/DD, DD-MM-YYYY, YYYY-MM, YYYYMMDD, +2 |
| custom_date_format | STRING | %Y-%m-%d | strftime pattern, used when date_format = custom |
| include_time | BOOLEAN | false | — |
| time_format | COMBO | HH-MM | 5 options: HH-MM-SS, HH-MM, HH, HH:MM:SS, custom |
| custom_time_format | STRING | %H-%M-%S | strftime pattern, used when time_format = custom |
| separator | STRING | / | Joins text / date / time. '/' creates subfolders in a save path; use '_' or '-' for a flat name. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |