AI caption writers are now built into most social media tools, usually metered by credits and running on a model you cannot choose. If you post every day, those credits run out, and your drafts, product details and brand voice all pass through someone else's servers.

There is a free alternative that has quietly become good enough for everyday captions: running a language model on your own Mac. This guide explains how to do it with Ollama or LM Studio, which models to try, how to get captions that do not sound like AI, and where local models still fall short.

Why run AI locally for captions

  • It is free. No API bill and no credits. You pay only for the electricity.
  • It is private. Unreleased products, launch dates and client briefs never leave your Mac.
  • It works offline, on a train or a patchy connection.
  • Captions are a good fit. A caption is short, and the job (a hook, a few lines, a question, five hashtags) does not need the largest models.

The trade-off: local models are smaller than the big cloud models, so they are a little less polished, slower on older machines, and they cannot make pictures in a scheduler workflow like this one. For many people the sweet spot is a local model for everyday captions and a paid API key for the occasional long-form or image job.

What you need

  • A Mac with Apple silicon (M1 or later) is the comfortable choice. Small models run on Intel Macs but slowly.
  • Memory: as a rough guide, 8 GB of RAM handles small models of around 3 to 4 billion parameters; 16 GB handles 7 to 8 billion comfortably; more memory lets you run larger models.
  • Disk space: a few gigabytes per model.

Option 1: Ollama

Ollama is a free, open-source tool that downloads and runs models with one command and serves them on your Mac at a local address (localhost, port 11434) that other apps can talk to.

  1. Download Ollama from ollama.com and open it. It sits in your menu bar.
  2. Open Terminal and pull a model. Good starting points for captions are small general models such as Llama 3.2 (3B), Gemma or Qwen at a size your memory allows. For example: ollama pull llama3.2.
  3. Test it: ollama run llama3.2, then type a request and press return.

Ollama keeps running in the background, so any app that supports it can use the model.

Option 2: LM Studio

LM Studio is a free desktop app with a friendlier interface. You browse and download models inside the app, chat with them, and start a local server (by default at localhost, port 1234) that speaks the same API format as OpenAI's, so other apps can use it.

  1. Download LM Studio from lmstudio.ai and open it.
  2. Search for a model and download one that the app marks as a good fit for your Mac's memory.
  3. Load the model, then start the local server from the Developer tab.

If you prefer clicking to typing, start with LM Studio. If you want something that runs quietly in the background, start with Ollama. Both are free.

Writing captions that do not sound like AI

The model matters less than the instructions. Most bad AI captions share the same faults: they describe the image ("a vibrant photo of a cosy jacket"), they gush ("elevate your style!"), and they end every post with three questions and twelve emojis. A good prompt prevents all of that.

A structure that works well:

  1. Tell it who is speaking. "You write Instagram captions for a small vintage clothing shop. Voice: warm, plain, a bit dry. Short sentences. No exclamation marks."
  2. Give it the facts, not the picture. "Item: 1970s brown suede jacket, size M, fringe on the back, small mark on the cuff. Price on the site."
  3. Set the shape. "Write a hook line under 120 characters, then one to three lines that add something useful, then one question or nudge."
  4. Ban the clichés. "Do not describe the image. Do not repeat text already on the graphic. Avoid words like elevate, vibrant, must-have, game-changer."
  5. Ask for hashtags separately, with a number. Instagram allows at most five per post now, and Threads uses one topic tag. "Then suggest exactly five hashtags, best first: two broad community tags and three specific ones. No brand-name tag."

Write the voice once and reuse it. It is the single biggest lever on quality, more than switching models.

Checking the output

Local models make the same mistakes as cloud ones, a bit more often. Read every caption before it goes out, and check for:

  • facts the model added that you did not give it (sizes, dates, materials),
  • claims you cannot back up,
  • hashtags that are banned, irrelevant or someone else's brand.

If a draft is wrong, ask for a fresh one rather than feeding the bad draft back in as "notes"; a poor draft tends to pull the next one in the same direction.

Using a local model in Social Snagger

Social Snagger finds Ollama and LM Studio automatically when they are running on your Mac; there is no key to paste. In Settings, under AI, you can see what is connected, list the models available, and choose one for writing.

Once connected, the local model does the same jobs as a cloud one:

  • Write caption on any post in the Pick deck. Snagged posts keep the creator's original caption until you press it; your own files can be captioned automatically as they come in.
  • The Create composer writes every slide of a carousel, the caption and the hashtags in one press, and you can rewrite just one slide, just the caption or just the hashtags.
  • Plan my launch writes a whole 10, 20 or 25 post campaign. See the 25-post book launch plan.
  • Suggest one in the hashtag library asks the model for a new named set.

The brand voice lives in each brand's settings, and the app's caption instructions already follow the structure above: a hook under 120 characters, a few lines, one question or nudge, no narrating the image, and exactly five hashtags for Instagram, best first.

Pictures are the one thing local models do not cover here. To have the app make an AI picture for a slide, connect OpenAI, Gemini or OpenRouter as well; you can pick one provider for writing and another for pictures. Or use your own photos and screenshots, which often perform better anyway.

If you connect several providers, you might use a local model for everyday captions and keep a Claude or OpenAI key for launch plans, where a stronger model earns its cost.

Is it good enough?

For short captions and hashtag sets, a well-prompted small model on a recent Mac is good enough for most small brands, and the price is hard to argue with. For long, nuanced copy, cloud models are still better. The nice thing about choosing your own AI is that you can mix them, and change your mind next month without changing tools.

If you want to see how this fits a weekly routine, read how to batch a month of posts in an afternoon, or why a local-first scheduler might suit you.

Try it

Install Ollama or LM Studio, then download Social Snagger, free for Mac. Your next caption can be written on your own machine, for nothing.