Skip to content

Releases: TheIdeaPlace/Image-Description-Toolkit

Image Description Toolkit v4.8.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 23:02
1eec3d1

Image Description Toolkit v4.8.1

Image Description Toolkit (IDT) writes text descriptions of your images, using AI, in bulk.

Point it at a folder of photos and it produces a description of each one. Descriptions
can be written for alt text, for cataloging, for making an archive searchable, or for
anyone who needs to know what is in a picture without seeing it.

It runs entirely on your own machine if you want it to. No account, no subscription,
no uploading your photos anywhere.


Download

File Platform What it is
ImageDescriptionToolkitSetup-4.8.1-windows.exe Windows 10/11, 64-bit Start here. Installs all three applications.
IDT-4.8.1-macos-arm64.dmg macOS, Apple Silicon Start here. Contains all three.
idt-4.8.1-windows-x64.exe Windows Just the command-line tool, no installer
ImageDescriber-4.8.1-windows-x64.exe Windows Just the image GUI, no installer
IDTChat-4.8.1-windows-x64.exe Windows Just the chat client, no installer
idt-4.8.1-macos-arm64.tar.gz macOS Just the command-line tool
SHA256SUMS.txt — Checksums, if you want to verify your download

No Python, no dependencies. The Windows installer is signed; the macOS build is signed
and notarized by Apple.

The standalone .exe files are for people who want one tool and no installer. Most
people want the installer, which puts all three on the Start menu.


What changed in 4.8.1

A maintenance release, mostly for the idt command-line tool, from runs over an
11,000-picture iPhone library on a network share with Windows AI. How a batch treats a
video whose frames all fail or are declined, and the 25-refusals stop, change in
ImageDescriber too; the rest is the command-line tool.

  • A run stops when every picture is failing the same way. If 10 different pictures
    or videos in a row fail with exactly the same error, idt describe, idt guideme and the other
    describing commands now stop, as ImageDescriber already did. Before, they carried on
    through every picture that was left: when Windows AI stopped responding partway
    through a large batch, each picture waited three minutes to time out, with over
    10,000 still to go. A run also stops at once for a problem nothing else will get
    past, such as the Windows AI helper not being installed, and when the provider
    declines 25 different pictures or videos in a row, which usually means it is
    declining the prompt itself. A few declined pictures don't count toward the 10.
  • One video that fails doesn't stop a run. Windows AI can fail on every frame of a
    video, such as an iPhone screen recording, while describing everything around it.
    Those frames used to stop a batch, at the same place every time it was run. Now,
    in the command-line tool and in ImageDescriber, a video's frames count as one toward
    the 10. Once 3 frames of a video in a row fail the same way, the rest of that video
    is skipped, and the batch carries on with the next picture. The skipped frames stay
    undescribed. The command-line tool counts them at the end of the run and says how to
    try them again. ImageDescriber marks them as failed, and Describe All Undescribed
    tries them again. If the batch stopped because the provider stopped working,
    resuming it tries those frames as well.
  • Declined pictures aren't asked about again. When Windows AI declines a picture
    ("too much text", or its content filter), asking the same way again gets the same
    answer. Before, every run tried them all again, and since they were still
    undescribed they came first: a rerun over an iPhone library opened with a hundred of
    them. Now the command-line tool remembers which pictures a provider, model and
    prompt declined, leaves them out of later runs, and says how many it left out. A
    picture it couldn't read isn't a refusal, so that is tried again. To ask again, use
    another model (with Windows AI, which takes no prompt, another --model), another
    prompt style or provider, or --redescribe, which describes every picture again. A
    video whose frames are declined is skipped after 3 of them, as for failures, in the
    command-line tool and ImageDescriber, and next time the command-line tool leaves the
    whole video out.
  • Pictures that failed before are tried last, and failing again doesn't stop the
    run.
    In the command-line tool, a picture Windows AI couldn't describe is tried
    again, but only after every picture not yet tried. One that fails again exactly as
    it did before doesn't count toward the 10 that stop a run: a rerun of the iPhone
    library stopped at picture 72 when ten such pictures failed again, though Windows AI
    was working. A timeout always counts, and 30 pictures in a row failing again with
    none described still stop the run, so a provider that gets stuck is caught either
    way.
  • It tells you why it stopped, and how to carry on. The last line says
    Stopped. instead of Done. and counts the pictures not tried. Next comes the
    reason, then the exact command to carry on from where it stopped. The window title
    says the run stopped early, and the reason is written to the run log. idt watch
    stops only the batch that was failing and keeps watching.
  • Describing a folder again doesn't extract its videos' frames again. idt describe and idt video read every video again on each run, even when its frames
    were already in the workspace. On a large library on a network share, that was up
    to three hours of extraction before a single picture was described. Now a video
    whose frames are all still there, made with the same options, is skipped, and its
    line says (already extracted). A video is extracted again if it was stopped
    partway, if any of its frames were deleted, if reading it ended early (a network
    share dropping out, say), or if you ask for different options, such as idt video --interval 1 after --interval 5. Videos in workspaces made before this version,
    or by ImageDescriber, are extracted once more and skipped from then on.

New in 4.8: Windows AI

On a Copilot+ PC, IDT can now describe your pictures with Windows' own model, on
the PC itself.
The new Windows AI provider runs on the PC's NPU: no API key, no
account, no internet connection and no cost, and your pictures never leave the PC.
It needs a Copilot+ PC with Windows 11 24H2 or later. On a Snapdragon X Elite a
description takes about two to four seconds.

Setting it up. The installer does it: leave Set up Windows AI ticked. On a
PC with an NPU it adds a small helper that lets IDT reach Windows' model, and the
Windows App Runtime from Microsoft if the PC doesn't already have it (about 100 MB,
downloaded once). Then idt models --provider Windows-AI lists its models, or
says what's missing.

Its models are kinds of description. Windows' model takes no prompt. It offers
four kinds of description instead, and those are its models: accessible (the
default, a long description written for people who are blind or have low vision),
detailed, brief and diagram. Because there's no prompt, the prompt
style isn't used: ImageDescriber's prompt controls say "not used by Windows AI",
and descriptions record the prompt as "none".

idt describe C:\Photos --provider Windows-AI
idt describe C:\Photos --provider Windows-AI --model brief

Where it works. idt describe and the other describing commands, idt guideme
and ImageDescriber. It isn't offered for chat, follow-up questions or auto-rename,
which all need a prompt.

When it declines a picture. Windows declines pictures that are mostly text
(OCR suits those better), and some its content filter stops. Each is marked as
failed and the batch carries on. Windows' model also fails on some pictures at
one size and not another, so IDT tries those again at smaller sizes, and most are
then described.

From 4.7: videos and batches

Videos no longer hold up the rest of a batch. In ImageDescriber, a batch that
includes videos used to extract every video's frames before describing anything:
more than half an hour with a large phone library on a network share. Now the
photos start being described straight away, and each video's frames join the
batch as soon as that video is extracted.

  • The progress window shows both at once: how many images have been described
    (the total grows as videos finish) and an Extracting Frames line counting
    the videos. While describing waits for the next video, it says so.
  • Stop stops describing and extraction together. Videos already extracted
    keep their frames; a video stopped partway is extracted again next time.
  • Pause pauses describing; extraction carries on in the background.
  • While videos are still being extracted, the progress bar shows activity rather
    than a percentage, because the total is still growing. Its label says the total
    isn't known yet, and the time-remaining estimate waits until it can be right.

Quitting partway through keeps what was done.

  • Quitting while a batch was extracting video frames used to lose every video
    already finished, so the next run extracted them all again. Each video is now
    saved as soon as its frames are extracted.
  • A batch that stops because the provider refused it (a sign-out, say), or
    because the app was closed, can be resumed, and resuming picks up where it left
    off: it describes what was left while extracting the videos it hadn't reached.
    A batch you stop yourself isn't offered for resume; Process → Describe All
    Undescribed
    carries on from where it got to.

Apple Intelligence declining a few photos no longer stops a batch. Apple's
on-device model declines some ordinary photos. Each one is counted as a failure,
but a run of similar photos no longer looks like the provider has stopped working.
If 25 photos in a row are declined, the batch stops and asks whether to c...

Read more

Image Description Toolkit v4.8.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 04:07
3455745

Image Description Toolkit v4.8.0

Image Description Toolkit (IDT) writes text descriptions of your images, using AI, in bulk.

Point it at a folder of photos and it produces a description of each one. Descriptions
can be written for alt text, for cataloging, for making an archive searchable, or for
anyone who needs to know what is in a picture without seeing it.

It runs entirely on your own machine if you want it to. No account, no subscription,
no uploading your photos anywhere.


Download

File Platform What it is
ImageDescriptionToolkitSetup-4.8.0-windows.exe Windows 10/11, 64-bit Start here. Installs all three applications.
IDT-4.8.0-macos-arm64.dmg macOS, Apple Silicon Start here. Contains all three.
idt-4.8.0-windows-x64.exe Windows Just the command-line tool, no installer
ImageDescriber-4.8.0-windows-x64.exe Windows Just the image GUI, no installer
IDTChat-4.8.0-windows-x64.exe Windows Just the chat client, no installer
idt-4.8.0-macos-arm64.tar.gz macOS Just the command-line tool
SHA256SUMS.txt — Checksums, if you want to verify your download

No Python, no dependencies. The Windows installer is signed; the macOS build is signed
and notarized by Apple.

The standalone .exe files are for people who want one tool and no installer. Most
people want the installer, which puts all three on the Start menu.


What changed in 4.8.0: Windows AI

On a Copilot+ PC, IDT can now describe your pictures with Windows' own model, on
the PC itself.
The new Windows AI provider runs on the PC's NPU: no API key, no
account, no internet connection and no cost, and your pictures never leave the PC.
It needs a Copilot+ PC with Windows 11 24H2 or later. On a Snapdragon X Elite a
description takes about two to four seconds.

Setting it up. The installer does it: leave Set up Windows AI ticked. On a
PC with an NPU it adds a small helper that lets IDT reach Windows' model, and the
Windows App Runtime from Microsoft if the PC doesn't already have it (about 100 MB,
downloaded once). Then idt models --provider Windows-AI lists its models, or
says what's missing.

Its models are kinds of description. Windows' model takes no prompt. It offers
four kinds of description instead, and those are its models: accessible (the
default, a long description written for people who are blind or have low vision),
detailed, brief and diagram. Because there's no prompt, the prompt
style isn't used: ImageDescriber's prompt controls say "not used by Windows AI",
and descriptions record the prompt as "none".

idt describe C:\Photos --provider Windows-AI
idt describe C:\Photos --provider Windows-AI --model brief

Where it works. idt describe and the other describing commands, idt guideme
and ImageDescriber. It isn't offered for chat, follow-up questions or auto-rename,
which all need a prompt.

When it declines a picture. Windows declines pictures that are mostly text
(OCR suits those better), and some its content filter stops. Each is marked as
failed and the batch carries on. Windows' model also fails on some pictures at
one size and not another, so IDT tries those again at smaller sizes, and most are
then described.

From 4.7: videos and batches

Videos no longer hold up the rest of a batch. In ImageDescriber, a batch that
includes videos used to extract every video's frames before describing anything:
more than half an hour with a large phone library on a network share. Now the
photos start being described straight away, and each video's frames join the
batch as soon as that video is extracted.

  • The progress window shows both at once: how many images have been described
    (the total grows as videos finish) and an Extracting Frames line counting
    the videos. While describing waits for the next video, it says so.
  • Stop stops describing and extraction together. Videos already extracted
    keep their frames; a video stopped partway is extracted again next time.
  • Pause pauses describing; extraction carries on in the background.
  • While videos are still being extracted, the progress bar shows activity rather
    than a percentage, because the total is still growing. Its label says the total
    isn't known yet, and the time-remaining estimate waits until it can be right.

Quitting partway through keeps what was done.

  • Quitting while a batch was extracting video frames used to lose every video
    already finished, so the next run extracted them all again. Each video is now
    saved as soon as its frames are extracted.
  • A batch that stops because the provider refused it (a sign-out, say), or
    because the app was closed, can be resumed, and resuming picks up where it left
    off: it describes what was left while extracting the videos it hadn't reached.
    A batch you stop yourself isn't offered for resume; Process → Describe All
    Undescribed
    carries on from where it got to.

Apple Intelligence declining a few photos no longer stops a batch. Apple's
on-device model declines some ordinary photos. Each one is counted as a failure,
but a run of similar photos no longer looks like the provider has stopped working.
If 25 photos in a row are declined, the batch stops and asks whether to carry on,
because that many usually means the prompt itself is being declined. The declined
photos stay marked as failed; a different prompt style often describes them.

"Embed description after processing" applies to each batch. A resumed batch
embeds as the original did. Photos downloaded from a web page and video frames
processed straight after extraction now follow the checkbox; before, they were
never embedded.

For screen reader users

  • In the progress window, the line you're reading stays selected when lines above
    it appear or disappear, for example when extraction finishes.
  • Stopping a batch, or quitting and then cancelling, gives one "Batch processing
    stopped" message. If the batch has to wait for a video to be released first, the
    progress window says "Stopping" in its title, with focus on that line, until it
    has stopped.
  • The window title doesn't show a misleading percentage while videos are still
    being extracted.

Smaller fixes

  • The statistics in the progress window count failures the same way as its
    summary. They could read "Failed: 3" above "4 failed".
  • Choosing Yes to resume a stopped batch works even while a video is still
    being released; the batch resumes as soon as it can, and the progress window
    says so meanwhile.
  • If videos give no frames, ImageDescriber says frames couldn't be extracted
    instead of "All images already have descriptions."
  • A new batch no longer inherits queued images from an older stopped batch.

New in 4.6: descriptions that never leave your Mac

macOS 27 includes an AI model that runs on the machine itself, and IDT can now use
it. Pick Apple Intelligence as your provider and your photos are described on
your own Mac: no API key, no account, no internet connection, and no cost however
many images you run through it.

It is about four to six seconds an image once it warms up, and what comes back is
real alt text — objects, colours, what is in front of what, laid out left to right —
not a one-line caption.

What you need

  • A Mac with Apple Silicon running macOS 27 or later.
  • Apple Intelligence switched on in System Settings → Apple Intelligence & Siri,
    with its model downloaded.
  • One command, once per machine, typed by an administrator:
sudo fm license

That last step is Apple's licence agreement for the on-device model. It applies to
everyone who uses the Mac, so it needs an administrator and IDT cannot do it for you.
Run idt models --provider apple afterwards and IDT will tell you whether this Mac is
ready — and if not, which of the three things above is missing. On a Mac that cannot
run it at all, the option is hidden rather than offered and then failing.

What to expect from it. It is a small model compared with Claude or GPT. Expect
shorter, plainer descriptions, less interpretation, and less certainty about small
text inside a picture. If you want the most detailed result, use a cloud provider.
If you want something free, fast and completely private, this is the one to reach
for. Every prompt style works with it — detailed, accessibility, artistic and
the rest each change the output the way they do everywhere else.

It refuses some pictures. The on-device model declines certain images outright —
IDT says so plainly, and the run carries on to the next one. Retrying the same request
will not help, but a different prompt style often will, and which one is not
predictable: on one photo of a museum taxidermy display, narrative and detailed
worked on one machine while accessibility and artistic worked on another. The
shorter styles are refused most often, aialttext and simple among them, which is
worth knowing if you are generating alt text. docs/apple-intelligence-safety-refusals.md
records everything that was measured, and ships a script that reproduces it.

One limit worth knowing: the on-device model holds about 4,096 tokens in total, an
order of magnitude less than the cloud models. That is ample for describing images,
but chats reach the limit quickly. When one does, IDT says so and asks you to
start a new conversation rather than silently retrying something that cannot work.


New in 4.6: Claude on the subscription you already pay for

If you have Claude Pro or Max, IDT can now use that subscription instead of an API
key. Choose Claude Code as your provider, sign in once, and requests count
against your plan rather than charging an API account.

claude auth login

Pick haiku, sonnet or opus. Each is an alias the Claude Code app resolves to
the current model of that tier, so the list cannot go...

Read more

Image Description Toolkit v4.7.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 17:53
6f3c8d8

Image Description Toolkit v4.7.0

Image Description Toolkit (IDT) writes text descriptions of your images, using AI, in bulk.

Point it at a folder of photos and it produces a description of each one. Descriptions
can be written for alt text, for cataloging, for making an archive searchable, or for
anyone who needs to know what is in a picture without seeing it.

It runs entirely on your own machine if you want it to. No account, no subscription,
no uploading your photos anywhere.


Download

File Platform What it is
ImageDescriptionToolkitSetup-4.7.0-windows.exe Windows 10/11, 64-bit Start here. Installs all three applications.
IDT-4.7.0-macos-arm64.dmg macOS, Apple Silicon Start here. Contains all three.
idt-4.7.0-windows-x64.exe Windows Just the command-line tool, no installer
ImageDescriber-4.7.0-windows-x64.exe Windows Just the image GUI, no installer
IDTChat-4.7.0-windows-x64.exe Windows Just the chat client, no installer
idt-4.7.0-macos-arm64.tar.gz macOS Just the command-line tool
SHA256SUMS.txt — Checksums, if you want to verify your download

No Python, no dependencies. The Windows installer is signed; the macOS build is signed
and notarized by Apple.

The standalone .exe files are for people who want one tool and no installer. Most
people want the installer, which puts all three on the Start menu.


What changed in 4.7.0

Videos no longer hold up the rest of a batch. In ImageDescriber, a batch that
includes videos used to extract every video's frames before describing anything:
more than half an hour with a large phone library on a network share. Now the
photos start being described straight away, and each video's frames join the
batch as soon as that video is extracted.

  • The progress window shows both at once: how many images have been described
    (the total grows as videos finish) and an Extracting Frames line counting
    the videos. While describing waits for the next video, it says so.
  • Stop stops describing and extraction together. Videos already extracted
    keep their frames; a video stopped partway is extracted again next time.
  • Pause pauses describing; extraction carries on in the background.
  • While videos are still being extracted, the progress bar shows activity rather
    than a percentage, because the total is still growing. Its label says the total
    isn't known yet, and the time-remaining estimate waits until it can be right.

Quitting partway through keeps what was done.

  • Quitting while a batch was extracting video frames used to lose every video
    already finished, so the next run extracted them all again. Each video is now
    saved as soon as its frames are extracted.
  • A batch that stops because the provider refused it (a sign-out, say), or
    because the app was closed, can be resumed, and resuming picks up where it left
    off: it describes what was left while extracting the videos it hadn't reached.
    A batch you stop yourself isn't offered for resume; Process → Describe All
    Undescribed
    carries on from where it got to.

Apple Intelligence declining a few photos no longer stops a batch. Apple's
on-device model declines some ordinary photos. Each one is counted as a failure,
but a run of similar photos no longer looks like the provider has stopped working.
If 25 photos in a row are declined, the batch stops and asks whether to carry on,
because that many usually means the prompt itself is being declined. The declined
photos stay marked as failed; a different prompt style often describes them.

"Embed description after processing" applies to each batch. A resumed batch
embeds as the original did. Photos downloaded from a web page and video frames
processed straight after extraction now follow the checkbox; before, they were
never embedded.

For screen reader users

  • In the progress window, the line you're reading stays selected when lines above
    it appear or disappear, for example when extraction finishes.
  • Stopping a batch, or quitting and then cancelling, gives one "Batch processing
    stopped" message. If the batch has to wait for a video to be released first, the
    progress window says "Stopping" in its title, with focus on that line, until it
    has stopped.
  • The window title doesn't show a misleading percentage while videos are still
    being extracted.

Smaller fixes

  • The statistics in the progress window count failures the same way as its
    summary. They could read "Failed: 3" above "4 failed".
  • Choosing Yes to resume a stopped batch works even while a video is still
    being released; the batch resumes as soon as it can, and the progress window
    says so meanwhile.
  • If videos give no frames, ImageDescriber says frames couldn't be extracted
    instead of "All images already have descriptions."
  • A new batch no longer inherits queued images from an older stopped batch.

New in 4.6: descriptions that never leave your Mac

macOS 27 includes an AI model that runs on the machine itself, and IDT can now use
it. Pick Apple Intelligence as your provider and your photos are described on
your own Mac: no API key, no account, no internet connection, and no cost however
many images you run through it.

It is about four to six seconds an image once it warms up, and what comes back is
real alt text — objects, colours, what is in front of what, laid out left to right —
not a one-line caption.

What you need

  • A Mac with Apple Silicon running macOS 27 or later.
  • Apple Intelligence switched on in System Settings → Apple Intelligence & Siri,
    with its model downloaded.
  • One command, once per machine, typed by an administrator:
sudo fm license

That last step is Apple's licence agreement for the on-device model. It applies to
everyone who uses the Mac, so it needs an administrator and IDT cannot do it for you.
Run idt models --provider apple afterwards and IDT will tell you whether this Mac is
ready — and if not, which of the three things above is missing. On a Mac that cannot
run it at all, the option is hidden rather than offered and then failing.

What to expect from it. It is a small model compared with Claude or GPT. Expect
shorter, plainer descriptions, less interpretation, and less certainty about small
text inside a picture. If you want the most detailed result, use a cloud provider.
If you want something free, fast and completely private, this is the one to reach
for. Every prompt style works with it — detailed, accessibility, artistic and
the rest each change the output the way they do everywhere else.

It refuses some pictures. The on-device model declines certain images outright —
IDT says so plainly, and the run carries on to the next one. Retrying the same request
will not help, but a different prompt style often will, and which one is not
predictable: on one photo of a museum taxidermy display, narrative and detailed
worked on one machine while accessibility and artistic worked on another. The
shorter styles are refused most often, aialttext and simple among them, which is
worth knowing if you are generating alt text. docs/apple-intelligence-safety-refusals.md
records everything that was measured, and ships a script that reproduces it.

One limit worth knowing: the on-device model holds about 4,096 tokens in total, an
order of magnitude less than the cloud models. That is ample for describing images,
but chats reach the limit quickly. When one does, IDT says so and asks you to
start a new conversation rather than silently retrying something that cannot work.


New in 4.6: Claude on the subscription you already pay for

If you have Claude Pro or Max, IDT can now use that subscription instead of an API
key. Choose Claude Code as your provider, sign in once, and requests count
against your plan rather than charging an API account.

claude auth login

Pick haiku, sonnet or opus. Each is an alias the Claude Code app resolves to
the current model of that tier, so the list cannot go stale the way a hardcoded one
does.

What it costs you. Not money, but some of your plan's allowance. A measured run
of 103 images used at most about 4% of a five-hour window on a Pro plan. Each image
goes on its own with a short instruction and none of Claude Code's usual extras, so
it costs roughly what the same request would through the API. Describing images
draws on the same allowance as your ordinary Claude conversations, so a long coding
session can use more of it than a folder of photos will.

IDT refuses to use Claude Code if it is signed in any other way — with an API key,
say — because that would bill an API account, which is the opposite of the point.
The provider only appears once Claude Code is installed.


The three applications

IDT is three programs that share everything — the same AI providers, the same
settings, the same files on disk. Use whichever suits the moment; you can start work
in one and finish in another.

ImageDescriber — a desktop app. Load a folder, pick a model and a description
style, and watch descriptions appear. Review and edit them, browse your images, ask
follow-up questions about a picture in a chat window, and export when you're done.

IDT Chat — a standalone chat client for Ollama, Claude, OpenAI, Claude Code and
Apple Intelligence, built for keyboard and screen reader use. Introduced in 4.5; the
two new providers reach it in this release.

idt — a command-line tool for doing the same thing to thousands of files without
supervision, or wiring IDT into a script.


Getting started

The desktop app

  1. Install and launch ImageDescriber.
  2. File → Load Directory (Ctrl+L) and choose a folder of images.
  3. Pick a provider and a description style.
  4. Process → Process Undescribed Images (Entire Workspace). To do one folder
    at a time instead, use **Proce...
Read more

Image Description Toolkit v4.6.1

Choose a tag to compare

@github-actions github-actions released this 05 Oct 18:24
7bdcd8e

Image Description Toolkit v4.6.1

Image Description Toolkit (IDT) writes text descriptions of your images, using AI, in bulk.

Point it at a folder of photos and it produces a description of each one. Descriptions
can be written for alt text, for cataloging, for making an archive searchable, or for
anyone who needs to know what is in a picture without seeing it.

It runs entirely on your own machine if you want it to. No account, no subscription,
no uploading your photos anywhere.


Download

File Platform What it is
ImageDescriptionToolkitSetup-4.6.1-windows.exe Windows 10/11, 64-bit Start here. Installs all three applications.
IDT-4.6.1-macos-arm64.dmg macOS, Apple Silicon Start here. Contains all three.
idt-4.6.1-windows-x64.exe Windows Just the command-line tool, no installer
ImageDescriber-4.6.1-windows-x64.exe Windows Just the image GUI, no installer
IDTChat-4.6.1-windows-x64.exe Windows Just the chat client, no installer
idt-4.6.1-macos-arm64.tar.gz macOS Just the command-line tool
SHA256SUMS.txt — Checksums, if you want to verify your download

No Python, no dependencies. The Windows installer is signed; the macOS build is signed
and notarized by Apple.

The standalone .exe files are for people who want one tool and no installer. Most
people want the installer, which puts all three on the Start menu.


What changed in 4.6.1

A maintenance release. 4.6.0's two new providers are unchanged; this fixes things
found while using them, most of them in long ImageDescriber batches.

Long batches

  • Each description is saved as soon as it is written. Before, a batch kept
    every description in memory until the whole batch finished, so a crash or power
    cut partway through a long run lost all of it unless you had pressed Save. If a
    run is interrupted now, reopening the workspace offers to resume at the first
    image not yet described.
  • A batch stops when the AI provider can't be used. If Claude Code's sign-in
    expires partway through, your API key is refused, or the provider isn't set up,
    every remaining image would fail the same way. Before, the batch carried on and
    failed them one by one: 533 images in 17 minutes in one real run. Now it stops at
    the first such failure, shows the provider's message and keeps its place. Fix the
    problem (for Claude Code, run claude auth login), then choose Yes to resume
    the same batch, or No to resume later from the workspace. A batch also stops
    when 10 images in a row fail with exactly the same error, which catches a
    used-up plan or Ollama not running.
  • Failed images no longer open an error window each. A batch with many
    failures used to bury the screen in error windows, one per image. Failures are
    now counted in the progress window, and the end of the batch reports them once.
  • A batch with many videos starts straight away on a Mac. With videos on a
    network share, ImageDescriber could freeze for up to two minutes before its
    progress window appeared, and VoiceOver reported no windows at all. The window
    and its "Extracting frames" stage now appear immediately.
  • Stopping and restarting a batch with videos works. Stopping a batch, then
    choosing Process → Describe All Undescribed, could extract a video's frames a
    second time and then fail with "file not found". Stop now works at every stage,
    including while frames are being extracted, and only one batch can run at a
    time, so a second batch can no longer delete frames the first is using.
  • Extracted video frames are found after you reopen a workspace. Before, every
    frame could show as "not found" after reopening. Workspaces saved by earlier
    versions find their frames again.
  • Two videos with the same name keep their own frames. Videos called, for
    example, IMG_0001.MOV in different folders shared one frames folder, so one
    video's frames were lost or given the other's descriptions. This is fixed in
    ImageDescriber and in the idt command-line tool.
  • The open workspace can't be replaced while a batch is using it. Opening
    another workspace during a batch sent the batch's descriptions nowhere;
    ImageDescriber now says a batch is running instead.
  • An empty answer from the AI counts as a failure. It used to be saved as a
    blank description, and the image was then treated as described.

Everything else

  • Play a video from ImageDescriber. Press Enter (or double-click) on a
    video in the image list, or choose Process → Play Video, to open it in your
    usual video player.
  • On a Mac, selecting a described image shows its description in full.
    Before, the description list filled in but the description editor next to it
    could stay unchanged.
  • Apple Intelligence retries when its model manager drops a request. Apple's
    on-device model occasionally fails to load for one image, with an error that
    looks like a server fault. It is momentary — every image that hit it described
    fine on a second attempt — but IDT treated it as final and skipped the image.
    It is now retried, so you should not see it at all.
  • Attaching more than one photo to a message in IDT Chat no longer returns a
    blank answer.
    The images were sent at full size and the local server dropped
    the request. They are scaled before sending now.
  • When Apple Intelligence declines an image, it says so in plain words instead
    of showing a raw server error, and tells you that a different prompt style
    usually works.
  • idt describe --provider claude-code warns when your configured
    default_model is not one Claude Code offers, instead of failing on every
    image with a message about model catalogs.
  • ImageDescriber opens after an in-app update on Windows. Leaving Launch
    ImageDescriber
    checked at the end of an update could show "Security validation
    failure: unexpected name of application's home directory!" instead of opening
    the app. The fix lives in the version you update from, so updating to 4.6.1
    may still show it once: click OK and start ImageDescriber as usual. From 4.6.1
    on it won't happen. New installs were never affected.

New in 4.6: descriptions that never leave your Mac

macOS 27 includes an AI model that runs on the machine itself, and IDT can now use
it. Pick Apple Intelligence as your provider and your photos are described on
your own Mac: no API key, no account, no internet connection, and no cost however
many images you run through it.

It is about four to six seconds an image once it warms up, and what comes back is
real alt text — objects, colours, what is in front of what, laid out left to right —
not a one-line caption.

What you need

  • A Mac with Apple Silicon running macOS 27 or later.
  • Apple Intelligence switched on in System Settings → Apple Intelligence & Siri,
    with its model downloaded.
  • One command, once per machine, typed by an administrator:
sudo fm license

That last step is Apple's licence agreement for the on-device model. It applies to
everyone who uses the Mac, so it needs an administrator and IDT cannot do it for you.
Run idt models --provider apple afterwards and IDT will tell you whether this Mac is
ready — and if not, which of the three things above is missing. On a Mac that cannot
run it at all, the option is hidden rather than offered and then failing.

What to expect from it. It is a small model compared with Claude or GPT. Expect
shorter, plainer descriptions, less interpretation, and less certainty about small
text inside a picture. If you want the most detailed result, use a cloud provider.
If you want something free, fast and completely private, this is the one to reach
for. Every prompt style works with it — detailed, accessibility, artistic and
the rest each change the output the way they do everywhere else.

It refuses some pictures. The on-device model declines certain images outright —
IDT says so plainly, and the run carries on to the next one. Retrying the same request
will not help, but a different prompt style often will, and which one is not
predictable: on one photo of a museum taxidermy display, narrative and detailed
worked on one machine while accessibility and artistic worked on another. The
shorter styles are refused most often, aialttext and simple among them, which is
worth knowing if you are generating alt text. docs/apple-intelligence-safety-refusals.md
records everything that was measured, and ships a script that reproduces it.

One limit worth knowing: the on-device model holds about 4,096 tokens in total, an
order of magnitude less than the cloud models. That is ample for describing images,
but chats reach the limit quickly. When one does, IDT says so and asks you to
start a new conversation rather than silently retrying something that cannot work.


New in 4.6: Claude on the subscription you already pay for

If you have Claude Pro or Max, IDT can now use that subscription instead of an API
key. Choose Claude Code as your provider, sign in once, and requests count
against your plan rather than charging an API account.

claude auth login

Pick haiku, sonnet or opus. Each is an alias the Claude Code app resolves to
the current model of that tier, so the list cannot go stale the way a hardcoded one
does.

What it costs you. Not money, but some of your plan's allowance. A measured run
of 103 images used at most about 4% of a five-hour window on a Pro plan. Each image
goes on its own with a short instruction and none of Claude Code's usual extras, so
it costs roughly what the same request would through the API. Describing images
draws on the same allowance as your ordinary Claude conversations, so a long coding
session can use more of it than a folder of photos will.

IDT refuses to use Claude Code if it is signed in any other...

Read more

Image Description Toolkit v4.6.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 14:16
024623c

Image Description Toolkit v4.6.0

Image Description Toolkit (IDT) writes text descriptions of your images, using AI, in bulk.

Point it at a folder of photos and it produces a description of each one. Descriptions
can be written for alt text, for cataloging, for making an archive searchable, or for
anyone who needs to know what is in a picture without seeing it.

It runs entirely on your own machine if you want it to. No account, no subscription,
no uploading your photos anywhere.


Download

File Platform What it is
ImageDescriptionToolkitSetup-4.6.0-windows.exe Windows 10/11, 64-bit Start here. Installs all three applications.
IDT-4.6.0-macos-arm64.dmg macOS, Apple Silicon Start here. Contains all three.
idt-4.6.0-windows-x64.exe Windows Just the command-line tool, no installer
ImageDescriber-4.6.0-windows-x64.exe Windows Just the image GUI, no installer
IDTChat-4.6.0-windows-x64.exe Windows Just the chat client, no installer
idt-4.6.0-macos-arm64.tar.gz macOS Just the command-line tool
SHA256SUMS.txt — Checksums, if you want to verify your download

No Python, no dependencies. The Windows installer is signed; the macOS build is signed
and notarized by Apple.

The standalone .exe files are for people who want one tool and no installer. Most
people want the installer, which puts all three on the Start menu.


New in 4.6: descriptions that never leave your Mac

macOS 27 includes an AI model that runs on the machine itself, and IDT can now use
it. Pick Apple Intelligence as your provider and your photos are described on
your own Mac: no API key, no account, no internet connection, and no cost however
many images you run through it.

It is about four to six seconds an image once it warms up, and what comes back is
real alt text — objects, colours, what is in front of what, laid out left to right —
not a one-line caption.

What you need

  • A Mac with Apple Silicon running macOS 27 or later.
  • Apple Intelligence switched on in System Settings → Apple Intelligence & Siri,
    with its model downloaded.
  • One command, once per machine, typed by an administrator:
sudo fm license

That last step is Apple's licence agreement for the on-device model. It applies to
everyone who uses the Mac, so it needs an administrator and IDT cannot do it for you.
Run idt models --provider apple afterwards and IDT will tell you whether this Mac is
ready — and if not, which of the three things above is missing. On a Mac that cannot
run it at all, the option is hidden rather than offered and then failing.

What to expect from it. It is a small model compared with Claude or GPT. Expect
shorter, plainer descriptions, less interpretation, and less certainty about small
text inside a picture. If you want the most detailed result, use a cloud provider.
If you want something free, fast and completely private, this is the one to reach
for. Every prompt style works with it — detailed, accessibility, artistic and
the rest each change the output the way they do everywhere else.

It refuses some pictures. The on-device model declines certain images outright —
IDT says so plainly, and the run carries on to the next one. Retrying the same request
will not help, but a different prompt style often will, and which one is not
predictable: on one photo of a museum taxidermy display, narrative and detailed
worked on one machine while accessibility and artistic worked on another. The
shorter styles are refused most often, aialttext and simple among them, which is
worth knowing if you are generating alt text. docs/apple-intelligence-safety-refusals.md
records everything that was measured, and ships a script that reproduces it.

One limit worth knowing: the on-device model holds about 4,096 tokens in total, an
order of magnitude less than the cloud models. That is ample for describing images,
but chats reach the limit quickly. When one does, IDT says so and asks you to
start a new conversation rather than silently retrying something that cannot work.


New in 4.6: Claude on the subscription you already pay for

If you have Claude Pro or Max, IDT can now use that subscription instead of an API
key. Choose Claude Code as your provider, sign in once, and requests count
against your plan rather than charging an API account.

claude auth login

Pick haiku, sonnet or opus. Each is an alias the Claude Code app resolves to
the current model of that tier, so the list cannot go stale the way a hardcoded one
does.

What it costs you. Not money, but some of your plan's allowance. A measured run
of 103 images used at most about 4% of a five-hour window on a Pro plan. Each image
goes on its own with a short instruction and none of Claude Code's usual extras, so
it costs roughly what the same request would through the API. Describing images
draws on the same allowance as your ordinary Claude conversations, so a long coding
session can use more of it than a folder of photos will.

IDT refuses to use Claude Code if it is signed in any other way — with an API key,
say — because that would bill an API account, which is the opposite of the point.
The provider only appears once Claude Code is installed.


The three applications

IDT is three programs that share everything — the same AI providers, the same
settings, the same files on disk. Use whichever suits the moment; you can start work
in one and finish in another.

ImageDescriber — a desktop app. Load a folder, pick a model and a description
style, and watch descriptions appear. Review and edit them, browse your images, ask
follow-up questions about a picture in a chat window, and export when you're done.

IDT Chat — a standalone chat client for Ollama, Claude, OpenAI, Claude Code and
Apple Intelligence, built for keyboard and screen reader use. Introduced in 4.5; the
two new providers reach it in this release.

idt — a command-line tool for doing the same thing to thousands of files without
supervision, or wiring IDT into a script.


Getting started

The desktop app

  1. Install and launch ImageDescriber.
  2. File → Load Directory (Ctrl+L) and choose a folder of images.
  3. Pick a provider and a description style.
  4. Process → Process Undescribed Images (Entire Workspace). To do one folder
    at a time instead, use Process → Process Undescribed in Selected Folder.

That's the whole loop. If you have no AI provider set up yet, see below — start with
Ollama.

The chat client

Launch IDT Chat, type a message, and press Enter. The first message asks which
provider and model you want. With Ollama running it needs no key and no setup.

The command line

idt guideme

An interactive wizard that asks what you want, shows you the exact command it would
run, and offers to run it. Made to be read aloud — numbered choices, no spinners, no
ANSI escapes.

Once you know what you want:

idt describe ~/Pictures/Vacation/

You need an AI provider

IDT does not include an AI model. Choose one:

Provider Cost Runs where Notes
Ollama Free Your machine Recommended to start. Nothing leaves your computer. The Windows installer can set it up for you.
Claude (Anthropic) Paid API Cloud Highest quality. Needs ANTHROPIC_API_KEY.
OpenAI GPT Paid API Cloud Needs OPENAI_API_KEY.
Apple Intelligence Free Your Mac New in 4.6. macOS 27 on Apple Silicon. Nothing leaves the machine.
Claude Code Your Claude plan Cloud New in 4.6. Uses a Pro/Max subscription instead of an API key.
MLX Free Your Mac Apple Silicon only, and ImageDescriber only — see below.

Why MLX is in ImageDescriber but not IDT Chat. MLX needs Apple's mlx and
mlx-vlm libraries, which are large: bundling them into IDT Chat would take it
from about 40 MB to around 350 MB. That is worth paying in ImageDescriber,
where describing a folder of photos locally is the whole point. It is worth
much less in a chat client, because Ollama now runs several models through MLX
on Apple Silicon itself — chatting with Ollama on a Mac already gets you the
Metal acceleration, without a second copy of the libraries. If you specifically
want to chat with an MLX model, ImageDescriber's own chat window offers it. IDT
Chat hides the option rather than listing one that would fail the moment you
picked it.

With Ollama you also need a vision model — ollama pull minicpm-v4.6 gets you one.
8 GB of RAM is a realistic minimum for local models; cloud providers have no such
requirement.


What it does

Describes images in bulk. JPEG, PNG, WebP, TIFF, HEIC/HEIF (iPhone photos), and
more. Point it at a folder and walk away.

Describes video. Extracts frames — at a fixed interval, or only where the scene
changes — and describes those.

Description styles. Several built in, from one-line alt text to detailed prose,
and you can write your own. The style is the prompt sent to the AI, and editing it is
a first-class feature rather than something buried in a config file.

Tells the AI where and when the photo was taken. If an image carries GPS
coordinates and a date, IDT can include them in the prompt, which measurably improves
descriptions. Optionally it will look up the city and state. Off by default; nothing
is sent anywhere unless you turn geocoding on.

Writes descriptions into the image files. idt embed copies your images and
writes the description into EXIF and XMP metadata, so it travels with the file and
shows up in Windows Explorer, Lightroom, Bridge, and Apple Photos. Your originals are
never modified.

Downloads images from a web page and describes them in one pass — useful for
generating alt text for a site.

Exports to HTML, CSV, or pl...

Read more

Image Description Toolkit v4.5.0

Choose a tag to compare

@github-actions github-actions released this 19 Aug 14:17

Image Description Toolkit v4.5.0

Image Description Toolkit (IDT) writes text descriptions of your images, using AI, in bulk.

Point it at a folder of photos and it produces a description of each one. Descriptions
can be written for alt text, for cataloging, for making an archive searchable, or for
anyone who needs to know what is in a picture without seeing it.

It runs entirely on your own machine if you want it to. No account, no subscription,
no uploading your photos anywhere.


Download

File Platform What it is
ImageDescriptionToolkitSetup-4.5.0-windows.exe Windows 10/11, 64-bit Start here. Installs all three applications.
IDT-4.5.0-macos-arm64.dmg macOS, Apple Silicon Start here. Contains all three.
idt-4.5.0-windows-x64.exe Windows Just the command-line tool, no installer
ImageDescriber-4.5.0-windows-x64.exe Windows Just the image GUI, no installer
IDTChat-4.5.0-windows-x64.exe Windows Just the chat client, no installer
idt-4.5.0-macos-arm64.tar.gz macOS Just the command-line tool
SHA256SUMS.txt — Checksums, if you want to verify your download

No Python, no dependencies. The Windows installer is signed; the macOS build is signed
and notarized by Apple.

The standalone .exe files are for people who want one tool and no installer. Most
people want the installer, which puts all three on the Start menu.


New in 4.5: IDT Chat, a chat client built for screen readers

IDT Chat is new in this release, and it is not an image tool. It is a
general-purpose chat client for Ollama, Claude and OpenAI that happens to ship with an
image toolkit, and it exists because mainstream chat applications are awkward to use
with a screen reader.

Three decisions shape it:

  • Streaming does not narrate. Text accumulates silently and is announced once,
    complete, when the reply finishes. Reading a response token by token floods a screen
    reader and makes the app unusable; you can also choose to hear only a one-sentence
    summary, or nothing at all.
  • The conversation is a list, not a scrolling wall. Each turn is one line naming
    who spoke, arrow keys move through it, and the full text of the highlighted turn
    appears in a pane you can select and copy from.
  • Everything has a key. Enter sends, Ctrl+Shift+A attaches, Ctrl+. stops a
    reply in progress and silences it, Ctrl+Shift+R reads the last response again.

It also does the things a chat client should. Conversations save themselves after every
turn, so nothing is lost if it closes unexpectedly. You can switch model mid-conversation
without losing history, and each turn records which model produced it. Attachments cover
images for every provider and PDFs for Claude, and HEIC photos from an iPhone are
converted automatically because no provider reads HEIC. Token usage reports two numbers
that are genuinely different: what is in the model's context now, and what you have been
billed across the whole conversation.

On the Mac it can read replies aloud through a system voice; on Windows it can route
speech through JAWS or NVDA, or a Windows voice.

The same engine backs idt chat in the terminal, and conversations are stored as plain
JSON in ~/.idt/chats/ in the format ImageDescriber uses — so a conversation started in
one can be opened in the other.

Full documentation: Part 7 of the User
Guide
.


New in 4.5: the model list is now your model list

Every place IDT offers you a Claude or OpenAI model, that list now comes from the
provider, using your own API key, rather than from a list built into the app.

This fixes a problem that was invisible until it bit you. The lists used to be written
into the code and updated by hand, which meant:

  • A model released after your copy of IDT was built did not appear at all, no matter
    that your account could use it.
  • A model the provider had retired stayed on the list, and only failed when you
    picked it and ran a job.

Now the pickers show what your account can actually use. On a real OpenAI account the
list went from 13 hardcoded entries to 45 — including several GPT-5.x models that
simply had no way to appear before.

Practical notes:

  • It does not slow anything down. The list is cached for 24 hours and refreshed in
    the background, so pickers open instantly. idt models takes about a third of a
    second on a warm cache.
  • It still works offline and without an API key. With no key, no network, or an
    unreachable provider, you get the built-in list exactly as before.
  • New models are labelled. A model IDT has no details for shows as
    new — details unknown. It is fully usable; IDT just doesn't yet know its context
    window or price, so it budgets conservatively rather than guessing.
  • Your selected model is never silently changed. If a provider withdraws the model
    you had chosen, it stays in the picker and is marked, rather than quietly moving you
    to a different one.
  • idt models --refresh checks right now instead of waiting for the cache to expire.
  • idt models --all shows everything the API reports. OpenAI's account list also
    contains speech, image-generation and embedding models, which cannot describe a
    picture; IDT hides those so the picker stays usable with a keyboard and screen reader.

Also fixed in this release

  • idt models reported "no API key" for anyone whose key was stored in the Windows
    Credential Manager or in the config file, rather than in an environment variable.
    It now finds keys the same way every other command does.
  • The batch and chat model pickers in ImageDescriber defaulted to gpt-4o, a legacy
    model, regardless of what you had configured.
  • The context-window indicator in the chat window could disagree with the budget the
    app actually applied when trimming a long conversation.

The three applications

IDT is three programs that share everything — the same AI providers, the same
settings, the same files on disk. Use whichever suits the moment; you can start work
in one and finish in another.

ImageDescriber — a desktop app. Load a folder, pick a model and a description
style, and watch descriptions appear. Review and edit them, browse your images, ask
follow-up questions about a picture in a chat window, and export when you're done.

IDT Chat — a standalone chat client for Ollama, Claude and OpenAI. New in
4.5
, and described below.

idt — a command-line tool for doing the same thing to thousands of files without
supervision, or wiring IDT into a script.


Getting started

The desktop app

  1. Install and launch ImageDescriber.
  2. File → Load Directory (Ctrl+L) and choose a folder of images.
  3. Pick a provider and a description style.
  4. Process → Process Undescribed Images (Entire Workspace). To do one folder
    at a time instead, use Process → Process Undescribed in Selected Folder.

That's the whole loop. If you have no AI provider set up yet, see below — start with
Ollama.

The chat client

Launch IDT Chat, type a message, and press Enter. The first message asks which
provider and model you want. With Ollama running it needs no key and no setup.

The command line

idt guideme

An interactive wizard that asks what you want, shows you the exact command it would
run, and offers to run it. Made to be read aloud — numbered choices, no spinners, no
ANSI escapes.

Once you know what you want:

idt describe ~/Pictures/Vacation/

You need an AI provider

IDT does not include an AI model. Choose one:

Provider Cost Runs where Notes
Ollama Free Your machine Recommended to start. Nothing leaves your computer. The Windows installer can set it up for you.
Claude (Anthropic) Paid API Cloud Highest quality. Needs ANTHROPIC_API_KEY.
OpenAI GPT Paid API Cloud Needs OPENAI_API_KEY.
MLX Free Your Mac Apple Silicon only, and ImageDescriber only — see below.

Why MLX is in ImageDescriber but not IDT Chat. MLX needs Apple's mlx and
mlx-vlm libraries, which are large: bundling them into IDT Chat would take it
from about 40 MB to around 350 MB. That is worth paying in ImageDescriber,
where describing a folder of photos locally is the whole point. It is worth
much less in a chat client, because Ollama now runs several models through MLX
on Apple Silicon itself — chatting with Ollama on a Mac already gets you the
Metal acceleration, without a second copy of the libraries. If you specifically
want to chat with an MLX model, ImageDescriber's own chat window offers it. IDT
Chat hides the option rather than listing one that would fail the moment you
picked it.

With Ollama you also need a vision model — ollama pull minicpm-v4.6 gets you one.
8 GB of RAM is a realistic minimum for local models; cloud providers have no such
requirement.


What it does

Describes images in bulk. JPEG, PNG, WebP, TIFF, HEIC/HEIF (iPhone photos), and
more. Point it at a folder and walk away.

Describes video. Extracts frames — at a fixed interval, or only where the scene
changes — and describes those.

Description styles. Several built in, from one-line alt text to detailed prose,
and you can write your own. The style is the prompt sent to the AI, and editing it is
a first-class feature rather than something buried in a config file.

Tells the AI where and when the photo was taken. If an image carries GPS
coordinates and a date, IDT can include them in the prompt, which measurably improves
descriptions. Optionally it will look up the city and state. Off by default; nothing
is sent anywhere unless you turn geocoding on.

Writes descriptions into the image files. idt embed copies your images and
writes the description in...

Read more