How to dictate code without mangled formatting in long prompts. Prose-tuned speech destroys newlines, indentation, and pipes, so quote them by voice. Dictate specs first, let the model assemble, then run the ten-second format sweep.

When you dictate a prompt that must contain a code block or a table, the risk is not that you forget the content, it is that the formatting is destroyed on the way in, and learning to dictate code without mangled formatting begins with a destruction map of three specific places. The first is the newline: dictation engines tuned for prose insert spaces where a hard line break belongs, so a multi-line example collapses into one long sentence. The second is indentation, where leading spaces or tabs that define a code structure are flattened, so a Python function block loses its shape and your model sees a flat paragraph instead of nested logic. The third is the pipe character, the column separator of every markdown table, which is almost impossible to state naturally because the word pipe is ambiguous and the character is rarely spoken at all.
Each of the three destructions produces a recognizable artifact, and learning the artifacts lets you spot the damage before the model does. Collapsed newlines show up as run-on sentences that read like one breath, flattened indentation shows up as code that begins at the left margin no matter where you originally meant it to sit, and missing pipes show up as a table with every row merged into two columns or a single wall of text. These are prose-shaped failures, which is the key insight: nothing is being corrupted randomly, the engine is simply applying its prose tuning to content that is not prose, and every artifact is exactly what that tuning would produce.
The practical consequence is that the problem is not your pronunciation or your microphone, and it cannot be fixed by speaking more slowly. The characters that matter, newlines, indentation, pipes, are structurally absent from the spoken form, so no amount of articulation will carry them. What you can change is the path you take: either anchor the few characters that can be spoken, or stop dictating the structure altogether and dictate the requirements while the model assembles the block, and the rest of this guide covers both routes in the order you should use them. Before choosing, quantify the damage on one real prompt: paste your most complex recent block into the editor, count the lines that contain pure syntax, and multiply by two seconds, because that number is the price you pay every single time you speak the shape instead of the intent.
The root cause is a set of automations that were built for the way humans write sentences. Modern dictation engines run punctuation rules that convert spoken phrases into typographic choices: a pause becomes a period, the word comma becomes a comma character, and a long natural breath turns into a paragraph break. For a meeting summary or an email, these rules are magic. For code and tables, they are active sabotage, because the same automations interpret your spatial intent as streamed prose and rewrite it to fit a text document. The engine is not refusing your structure; it was never told you had any, since it hears speech, and speech is a stream, not a file.
Consider what each automation needs to do its job well. A pause-triggered newline assumes that a sentence ending is a paragraph ending, while a code block needs indentation-sensitive line breaks that no pause suggests. A spacing rule that inserts a space after punctuation destroys the exact off-by-one alignment that a table column depends on, and an capitalization pass that fixes lowercase after a period silently rewrites identifiers that were deliberately lowercase. Each rule is individually sensible and collectively devastating, which is why the failure is hard to fix by trial: you correct one artifact and the engine politely creates another, because the engine is working as designed for a different genre.
The historical fix, dictating into a plain editor and pasting into the prompt, only moves the problem one stage later, because the paste preserves what you typed and not what you meant. What actually helps is acknowledging the genre switch in your method: when the content is code or a table, your job is not to speak the block but to describe it, and the description is where the dictation engine excels. This is the intellectual foundation of the spec-then-assemble method, and it is also the reason that method beats any spoken attempt to reproduce a columna alignment one word at a time.
For the small structures you do want to say, learn the spoken anchor patterns that survive automation. Most dictation tools support a literal or quotation mode, where the phrase quote next keeps everything until the next quote unedited, and this is the single most useful weapon for identifiers that the engine would otherwise rewrite, such as an API path, a JSON key, or a function name with an underscore. Use it in bursts: say quote, next, the identifier, quote to end, and the engine inserts the characters without its prose passes. For short inline code, this makes dictation genuinely safe, and it costs you fewer words than the alternative of explaining the same identifier in prose and hoping the model does not misread it.
Slash and pipe have their own customs. Dictate slash or forward slash for the path separator and the engine usually produces the character, while pipe is best stated as vertical bar or pipe character, because the plain word pipe is ambiguous enough that some tools write the word instead. For a table row, say row one, column one, then the value, then pipe, then the next value, letting the punctuation mode of the engine place the separators; the rhythm is awkward for the first ten tables and automatic after that. Practicing the three anchors, literal mode, the explicit slash, and the named pipe, removes most of the character loss within a week, because each anchor is a deliberate instruction rather than an incidental pause.
Anchor patterns are for the short and the irreplaceable, and the boundary matters. If the structured block is three lines, anchor it. If it is fifteen lines, anchoring becomes a recitation marathon where the rate of error rises faster than your speed, and you are better off describing the block instead. Apply the rule of thumb: speak anything under a sentence of structure, delegate anything longer, because the engine's prose tuning wins on very short stretches that you can monitor and loses on long ones that you cannot. That boundary is where the second, more reliable method takes over. One more check belongs here: run the anchor aloud once on the short block before you trust it, because a single misheard slash in a two-line expression is cheap to catch and expensive to debug later, and the ten-second rehearsal is the difference between a habit and a gamble.
The spec-then-assemble method inverts the usual order: you dictate the requirements, and the model builds the structured block. Instead of trying to voice a JSON schema or a five-row comparison table, you speak the plan in ordinary prose: three columns titled tool, cost, and review, five rows, first row the team that owns it, and so on. The dictation engine is at its best in exactly this mode, and the model, which receives well-formed prose, is at its best assembling structure, so the method places each job where its sender is strongest and yields a correct block instead of a mangled attempt. The prompt becomes a specification document rather than a data entry form.
Write the spec with the structure's grammar in mind so the model has what it needs. Name the target format explicitly, say build a markdown table with three columns, or wrap this in a python code block with type hints, and define each row with a clear noun phrase rather than a vague description. When the input data itself is complex, dictate it as a simple list, one item per sentence, because a list is the one structure prose tuning preserves reliably, and let the model convert the list into the format. The model does not mind the extra step, and the extra step is exactly the translation from speech-friendly to format-friendly that you cannot do reliably with your voice.
Assemble a habit of verifying the model's output before you send it onward. A generated table may need a header alignment tweak, and a generated code snippet may need a comment clarified, but those fixes are one slide and one keystroke, and they are expected work rather than damage repair. The method's real reward is the removal of silent corruption: once the prompt you dictate contains no structure at all, the engine has nothing to mangle, and the only errors left are the ones you can see. When a code block must survive verbatim, add one final instruction to the spec: reproduce the identifier exactly as I have written it, which the model almost always honors.
Before any structured prompt leaves your hands, run the ten-second format sweep, a three-pass visual check that catches the artifacts this article describes. First pass, look at the line breaks: does every code line that should stand alone stand alone, and does the table have one row per line? Second pass, look at the whitespace: does the indentation reproduce your intent, with no tabs swallowed and no leading spaces added to prose? Third pass, look at the separators: are the pipe characters present, and does the table have a header row with the alignment dashes beneath it? Ten seconds, three questions, and the vast majority of format damage is caught before the model ever sees it.
The sweep pairs with the dictation history panel many tools offer. When you spot a missing pipe or a collapsed newline, read the extension's rendered transcript of that sentence rather than retyping it, because the panel shows what the engine heard and you can re-dictate just the broken fragment with an anchor phrase instead of word-correcting the whole block. This fragment-level repair is faster than a full re-dictation and keeps the good parts intact, which is exactly the surgical approach long prompts deserve. If the tool has a live audio playback for the last phrase, use it once, and the mismatch between your words and the transcript becomes obvious in a second.
Make the sweep automatic by linking it to a habit you cannot skip. Attach it to the send itself: never press enter on anything containing a code fence, a pipe, or more than two indented lines without the three passes, and if the prompt is especially long, paste it into a scratch note first, sweep there, then copy into the chat, which gives you a second chance to notice the flattening before it ships. One week of sweeping converts the pain of mangled structure into a routine that costs seconds, and the structured prompt stops being the one task you fear dictating, which is the point.
Table columns depend on pipe characters that are rarely spoken naturally and on line breaks that prose-tuned punctuation rules convert to spaces. The engine hears a stream of words, not a grid, so separators vanish. Say vertical bar explicitly, or better, dictate the row contents as a list and let the model assemble the table.
Yes, with limits. Short snippets survive if you use a literal or quote-next mode and speak the identifiers verbatim. Long blocks do not survive, because no dictation engine reproduces fifteen lines of indentation from speech reliably. For long code, dictate the requirements, declare the target format, and let the model write the block, then verify.
None in correctness, and it is the right approach for long verbatim blocks. The advantage of dictating the spec instead is speed and flow when the content is a description, not a file. Many dictation users do both: type the irreplaceable identifiers, dictate the requirements, and let the model do the joining work.
Use the ten-second rule of structure: if the structured content is under about three lines, speak it with anchor patterns and check it. If it is longer, the error rate of reciting it outweighs the checking, so describe it and let the model build it. The boundary is where a correction loop becomes cheaper than a recitation.

Dictate the spec, let the model assemble the block.
Use it across macOS, Windows, iOS, and Android