In short
CORS Chat lets you connect from the browser to compatible OpenAI Responses APIs, including local servers in LM Studio. Its main advantage is quickly testing different models without a separate interface — but only if the endpoint allows CORS.
The most useful thing about CORS Chat is not another window for talking to a model but the ability to test local and third-party LLMs straight from the browser. No separate backend is needed for such a test: an endpoint compatible with the OpenAI Responses API and configured for CORS is enough.
Simon Willison built the tool to run Qwen 3.8 27B in LM Studio on an M5 MacBook Pro and an NVIDIA DGX Spark. He tested the pairing with LM Studio through the --cors option, and with OpenRouter as well — both worked.
In the interface you can set your own headers and save several chats with different models and reasoning settings. History stays in the browser, and a conversation can be exported as JSON with an ordinary copy. For a developer that is more convenient than writing a throwaway script each time or wiring up a heavy UI.
There is a small but telling detail: if the model generates SVG, CORS Chat renders it progressively while the tokens are still arriving. That captures the tool's idea nicely: it is needed not only for the final answer but for watching how an endpoint behaves during streaming.
But the filter here is strict. The endpoint has to support the OpenAI Responses-compatible format specifically and to permit requests from the browser through CORS. If a server does not return the required headers or uses an incompatible API, CORS Chat will not get round the problem. Besides, conversations are stored locally in the browser, so they do not move between devices automatically — exporting JSON by hand is what remains.
For local models this looks like a good compromise: minimal infrastructure, quick access to different settings and the ability to compare endpoints in practice. But CORS turns from a convenient setting into the main criterion of compatibility: is your server ready to talk to a browser directly at all?
Source: Simon Willison's Weblog