<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fawwaaz Sheik</title>
    <description>The latest articles on DEV Community by Fawwaaz Sheik (@fzsheik).</description>
    <link>https://dev.to/fzsheik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3920379%2F2defd7f8-10e8-49bd-97af-20ac0cbeb110.png</url>
      <title>DEV Community: Fawwaaz Sheik</title>
      <link>https://dev.to/fzsheik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fzsheik"/>
    <language>en</language>
    <item>
      <title>How Codex and Claude usage-limit resets actually work (and how I track them)</title>
      <dc:creator>Fawwaaz Sheik</dc:creator>
      <pubDate>Tue, 27 Oct 2026 16:47:51 +0000</pubDate>
      <link>https://dev.to/fzsheik/how-codex-and-claude-usage-limit-resets-actually-work-and-how-i-track-them-38hh</link>
      <guid>https://dev.to/fzsheik/how-codex-and-claude-usage-limit-resets-actually-work-and-how-i-track-them-38hh</guid>
      <description>&lt;p&gt;If you use Claude Code or Codex every day, you've probably had this moment: you hit your limit, then someone on X says "limits just got reset" and you have no idea if that applies to you, if it already happened, or if it's still rolling out.&lt;/p&gt;

&lt;p&gt;I kept refreshing X to figure this out, so I built a small tracker with Claude Code that logs every reset with its source post. After a few months of watching the data, here's what I've learned about how these resets actually work.&lt;/p&gt;

&lt;h2&gt;
  
  
  First: there are two kinds of "reset"
&lt;/h2&gt;

&lt;p&gt;This is where most of the confusion comes from.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Your normal windows.&lt;/strong&gt; Both products have a rolling short window and a weekly window.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude:&lt;/strong&gt; paid plans have a session limit that resets every five hours, plus weekly limits that reset once a week. Your weekly reset day and time are fixed per account and shown in Settings &amp;gt; Usage. Usage on claude.ai, Claude Code and Claude Desktop all counts toward the same limit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex:&lt;/strong&gt; on Plus and Business Standard you get a five-hour window and a weekly window, and you need allowance left in both to keep going. A new five-hour window starts with your first message after the previous one ends. The Pro tiers currently have no five-hour limit, but a weekly allowance still applies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These roll over on their own. Nobody announces them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Extra, one-off resets.&lt;/strong&gt; These are the ones people actually talk about. Someone at Anthropic or OpenAI posts on X that limits have been reset, and everyone's allowance goes back to full. There's no published schedule for them. They just happen.&lt;/p&gt;

&lt;p&gt;The rest of this post is about type 2.&lt;/p&gt;

&lt;h2&gt;
  
  
  How often do they happen?
&lt;/h2&gt;

&lt;p&gt;From my log (all times UTC):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codex:&lt;/strong&gt; 63 full resets logged, plus 7 banked grants. The median gap between resets is &lt;strong&gt;3 days&lt;/strong&gt;. The longest wait was 68 days (Dec 25, 2025 to Mar 3, 2026).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude:&lt;/strong&gt; 13 full resets logged, plus 1 banked grant. The median gap is &lt;strong&gt;7.5 days&lt;/strong&gt;, and the longest wait between two resets was 47 days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;October 2026 has been wild for Codex: 12 resets in the month so far. Tibo (@thsottiaux) has been numbering his posts like a countdown ("Day 17/ Bet you thought we forgot, but no, it's reset day today", "Day 20/ Rest and reset", "Day 21/ Wonder what happens the remaining seven days. But today is a reset.").&lt;/p&gt;

&lt;p&gt;Claude is the opposite right now. The last full Claude reset was Sep 4, 2026 (Max plans), which is already longer ago than the previous longest gap in my log.&lt;/p&gt;

&lt;p&gt;So the honest answer to "when's the next reset?" is: nobody knows, and anyone giving you a date is guessing. What you &lt;em&gt;can&lt;/em&gt; do is look at the rhythm. That's why the &lt;a href="https://toolsfordevs.app/codex-reset" rel="noopener noreferrer"&gt;Codex reset tracker&lt;/a&gt; and the &lt;a href="https://toolsfordevs.app/claude-reset" rel="noopener noreferrer"&gt;Claude reset tracker&lt;/a&gt; each show the median gap and how many resets landed in the last 7, 30 and 90 days instead of a fake countdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  Announced isn't the same as landed
&lt;/h2&gt;

&lt;p&gt;This one bit me a few times. A reset post goes up, you check your usage, and nothing has changed.&lt;/p&gt;

&lt;p&gt;That's because some resets are announced first and propagate later. I log both timestamps when there's a separate "it's live now" post. Across the four Codex resets where I have both, the average gap between announcement and landing is &lt;strong&gt;9 h 12 min&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Reset&lt;/th&gt;
&lt;th&gt;Announced (UTC)&lt;/th&gt;
&lt;th&gt;Landed (UTC)&lt;/th&gt;
&lt;th&gt;Lag&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Aug 24, 2026&lt;/td&gt;
&lt;td&gt;Aug 23, 06:29&lt;/td&gt;
&lt;td&gt;Aug 24, 00:46&lt;/td&gt;
&lt;td&gt;18 h 18 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sep 8, 2026&lt;/td&gt;
&lt;td&gt;Sep 7, 19:24&lt;/td&gt;
&lt;td&gt;Sep 8, 04:05&lt;/td&gt;
&lt;td&gt;about 8 h 41 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oct 11, 2026&lt;/td&gt;
&lt;td&gt;Oct 10, 22:15&lt;/td&gt;
&lt;td&gt;Oct 11, 04:01&lt;/td&gt;
&lt;td&gt;about 5 h 46 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oct 13, 2026&lt;/td&gt;
&lt;td&gt;Oct 13, 01:03&lt;/td&gt;
&lt;td&gt;Oct 13, 05:06&lt;/td&gt;
&lt;td&gt;about 4 h&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;a href="https://toolsfordevs.app/codex-reset/2026-08-24" rel="noopener noreferrer"&gt;Aug 24 Codex reset&lt;/a&gt; is the extreme case: announced the day before, then "Reset has been propagated to accounts..." almost 18 hours later. If you saw the first post and checked right away, you'd have thought it was fake.&lt;/p&gt;

&lt;p&gt;Takeaway: if a reset was just announced and your usage hasn't moved, wait a few hours before assuming you weren't included.&lt;/p&gt;

&lt;h2&gt;
  
  
  Banked resets: the ones you have to redeem
&lt;/h2&gt;

&lt;p&gt;Both companies now also hand out &lt;strong&gt;banked&lt;/strong&gt; resets. These don't touch your limits automatically. They're a credit you use yourself, when you choose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Codex.&lt;/strong&gt; Per the Codex changelog, the feature shipped on June 11, 2026: Go, Plus, Pro and Business users get one free saved reset that expires 30 days after it's credited, and Plus and Pro can earn more via referrals (up to four banked). To redeem one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desktop or web: Settings &amp;gt; Usage&lt;/li&gt;
&lt;li&gt;Codex CLI: &lt;code&gt;/usage&lt;/code&gt; &amp;gt; Redeem reset&lt;/li&gt;
&lt;li&gt;The allowance it covers has to be under 80% remaining, or you can't use it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Per OpenAI's help page, a full banked reset restores the 5-hour and weekly allowance on Plus and Business Standard, and the weekly allowance on Pro tiers. It also changes your weekly reset date, so don't burn it right before your normal reset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude.&lt;/strong&gt; Anthropic calls it "Reset for free". You'll find it in Settings &amp;gt; Usage on the web or in Claude Desktop. It's not currently available on Claude Mobile or inside Claude Code in the terminal or IDE. It can't be undone once used, it's forfeited if you downgrade or cancel first, and your weekly limits still reset on their usual day.&lt;/p&gt;

&lt;p&gt;Expiry matters here. The only Claude banked grant so far came on Sep 22, 2026 (with the Opus 5.5 launch, for Pro, Max and Team) and expired on Oct 22 at 9am PT. Plenty of people only found out it existed after it was gone, so I now show status and expiry for every banked grant.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the tracker works
&lt;/h2&gt;

&lt;p&gt;Nothing fancy, which is kind of the point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every entry links to its source post on X. Entries I've checked myself get a "Verified" badge, and ones where the primary link is cited but not yet checked are marked "Source-linked".&lt;/li&gt;
&lt;li&gt;Part of the data is synced from codex-reset.com and claude-resets.com (credited on the site), merged with my own log, and the site rechecks every few minutes.&lt;/li&gt;
&lt;li&gt;Each reset gets its own page with the announced and landed times, the lead time, the type (global or banked) and, for banked ones, the expiry.&lt;/li&gt;
&lt;li&gt;You can get alerts without signing up for anything: there's an RSS feed at &lt;code&gt;/feed.xml&lt;/code&gt;, a calendar you can subscribe to, and raw JSON at &lt;code&gt;/resets.json&lt;/code&gt; if you want to build something on top of it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built the whole thing with Claude Code, which is a little funny given how many of those sessions ended in "5-hour limit reached".&lt;/p&gt;

&lt;p&gt;If you just want the one-line answer, it's on the homepage: &lt;a href="https://toolsfordevs.app/" rel="noopener noreferrer"&gt;did Claude or Codex reset today?&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Your 5-hour and weekly windows reset on their own. Extra resets are separate, ad hoc and unscheduled.&lt;/li&gt;
&lt;li&gt;Codex resets a lot more often than Claude (median gap 3 days vs 7.5 days in my log).&lt;/li&gt;
&lt;li&gt;A reset can be announced hours before it reaches your account. The average lag I've measured on Codex is about 9 hours.&lt;/li&gt;
&lt;li&gt;Banked resets have to be redeemed by you and they expire. Check Settings &amp;gt; Usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you spot a reset I missed, let me know in the comments and I'll add it with its source.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>openai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Price a Roblox Game Pass So You Net an Exact Amount</title>
      <dc:creator>Fawwaaz Sheik</dc:creator>
      <pubDate>Tue, 27 Oct 2026 03:49:53 +0000</pubDate>
      <link>https://dev.to/fzsheik/how-to-price-a-roblox-game-pass-so-you-net-an-exact-amount-4p7h</link>
      <guid>https://dev.to/fzsheik/how-to-price-a-roblox-game-pass-so-you-net-an-exact-amount-4p7h</guid>
      <description>&lt;p&gt;Roblox takes 30% of every game pass and developer product sale, and rounds your share down. If you want to receive an exact number of Robux, you have to price a little above what you'd guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The rule.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What you receive is floor(price × 0.7).&lt;/li&gt;
&lt;li&gt;The price to list is ceil(target ÷ 0.7).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cheat sheet for less obvious targets:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You want to receive&lt;/th&gt;
&lt;th&gt;List at&lt;/th&gt;
&lt;th&gt;You get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;td&gt;108&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;286&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;350&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;350&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,500&lt;/td&gt;
&lt;td&gt;3,572&lt;/td&gt;
&lt;td&gt;2,500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,000&lt;/td&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;td&gt;7,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;List one Robux lower and you lose a Robux: 71 pays 49 and 285 pays 199.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is a round price better?&lt;/strong&gt; Players respond to clean numbers like 99, 199 and 499. If you'd rather keep round prices, the &lt;a href="https://gamedevtool.com/roblox/tax-calculator" rel="noopener noreferrer"&gt;Roblox tax calculator&lt;/a&gt; shows exactly what each one pays: 99 pays 69, 199 pays 139 and 499 pays 349.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Turning it into money.&lt;/strong&gt; Say a pass priced at 286 sells 500 times. You receive 100,000 Earned Robux, which is $380 through DevEx at the standard rate. A &lt;a href="https://gamedevtool.com/roblox/devex-calculator" rel="noopener noreferrer"&gt;DevEx calculator&lt;/a&gt; shows this for any balance, including the higher US 18+ rate.&lt;/p&gt;

&lt;p&gt;The fee and rounding come from the Roblox Creator Hub. Check there for changes.&lt;/p&gt;

</description>
      <category>roblox</category>
      <category>gamedev</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How Roblox actually pays creators: the 30% fee, DevEx rates and UGC revenue share (2026)</title>
      <dc:creator>Fawwaaz Sheik</dc:creator>
      <pubDate>Tue, 27 Oct 2026 03:10:19 +0000</pubDate>
      <link>https://dev.to/fzsheik/how-roblox-actually-pays-creators-the-30-fee-devex-rates-and-ugc-revenue-share-2026-580i</link>
      <guid>https://dev.to/fzsheik/how-roblox-actually-pays-creators-the-30-fee-devex-rates-and-ugc-revenue-share-2026-580i</guid>
      <description>&lt;p&gt;If you sell anything on Roblox, the number on the price tag is not the number that lands in your account. Between the marketplace fee, rounding, revenue-share tiers and the Developer Exchange rate, a 100 Robux game pass turns into a lot less real money than most new creators expect. This post walks through each step with the actual formulas, so you can price things on purpose instead of guessing.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The 30% marketplace fee
&lt;/h2&gt;

&lt;p&gt;When a game pass, developer product or avatar item sells through the Roblox marketplace, Roblox keeps 30%. You get 70%, rounded down to a whole Robux:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;you receive = floor(price × 0.7)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;List price&lt;/th&gt;
&lt;th&gt;You receive&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;499&lt;/td&gt;
&lt;td&gt;349&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The rounding is why 25 Robux pays 17 and not 17.5. It barely matters on one sale, but it adds up over thousands.&lt;/p&gt;

&lt;h3&gt;
  
  
  Working backwards: what to list at
&lt;/h3&gt;

&lt;p&gt;Most of the time you know what you want to earn and need the price. Flip the formula and round up:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;list price = ceil(target ÷ 0.7)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;To net 1,000 Robux you list at ceil(1,428.57) = 1,429. Check it: floor(1,429 × 0.7) = floor(1,000.3) = 1,000. To net 500 you list at 715, because 714 only pays 499. One Robux too low and you miss your target every single sale.&lt;/p&gt;

&lt;p&gt;If you don't want to do this by hand for every pass, a &lt;a href="https://gamedevtool.com/roblox/tax-calculator" rel="noopener noreferrer"&gt;Roblox tax calculator&lt;/a&gt; does both directions: what you get after tax, and the list price for a target.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. DevEx: turning Robux into dollars
&lt;/h2&gt;

&lt;p&gt;The Developer Exchange (DevEx) program is how earned Robux become real money. Three things matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The minimum.&lt;/strong&gt; You need at least 30,000 earned Robux to cash out. At the standard rate that is $114.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The rates.&lt;/strong&gt; There are three:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.0038 per Robux, the standard rate.&lt;/li&gt;
&lt;li&gt;$0.0054 per Robux, the higher rate on Robux that came from eligible spending by US users aged 18 and over.&lt;/li&gt;
&lt;li&gt;$0.0035 per Robux, the old rate, which still applies to Robux you earned before September 5, 2025.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the same 100,000 Robux can be worth $350, $380 or $540 depending on when and how it was earned. Most creators have a mix. If you had 40,000 Robux left from before September 2025 and earned 60,000 since at the standard rate, you'd get 40,000 × 0.0035 + 60,000 × 0.0038 = $140 + $228 = $368.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Only earned Robux count.&lt;/strong&gt; Robux you bought can't be exchanged, and neither can Robux someone sent you through a transfer (transfers pay the recipient 90% and can't be DevExed).&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://gamedevtool.com/roblox/devex-calculator" rel="noopener noreferrer"&gt;DevEx calculator&lt;/a&gt; lets you split a balance across the three rates and tells you whether you've cleared the 30,000 minimum.&lt;/p&gt;

&lt;h3&gt;
  
  
  Putting the fee and DevEx together
&lt;/h3&gt;

&lt;p&gt;Say your game sells 1,000 copies of a 100 Robux pass. You receive 70,000 Robux. At $0.0038 that's $266, or about 26.6 cents per pass. That ratio is worth knowing before you plan anything around Robux income. For a quick dollar figure on any balance, use a &lt;a href="https://gamedevtool.com/roblox/robux-to-usd" rel="noopener noreferrer"&gt;Robux to USD calculator&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. UGC items: revenue share that grows with price
&lt;/h2&gt;

&lt;p&gt;UGC avatar items work differently from game passes. Your share depends on how far above the item's price floor you set it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At the price floor, you get 30%.&lt;/li&gt;
&lt;li&gt;At 2x the floor, you get 50%.&lt;/li&gt;
&lt;li&gt;At 6x the floor or more, you get 70%.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Take a made-up floor of 50 Robux:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Your share&lt;/th&gt;
&lt;th&gt;You earn per sale&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;50 (floor)&lt;/td&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100 (2x)&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;300 (6x)&lt;/td&gt;
&lt;td&gt;70%&lt;/td&gt;
&lt;td&gt;210&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At 6x the floor you earn 14 times more per sale than at the floor, so you only need 1/14 of the sales to break even. The real question is whether demand for your item drops faster than that. Usually it doesn't for items people actually want, which is why pricing at the floor is rarely the best move. Plug your own floor into a &lt;a href="https://gamedevtool.com/roblox/ugc-revenue-share" rel="noopener noreferrer"&gt;UGC revenue share calculator&lt;/a&gt; to compare prices side by side.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sales inside experiences
&lt;/h3&gt;

&lt;p&gt;When a UGC item is bought inside an experience, the split changes: 30% goes to the item's creator and 40% to the owner of the experience it sold in. If you made the item and own the game, both shares are yours.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Limited resale
&lt;/h2&gt;

&lt;p&gt;When a UGC Limited resells, the seller receives 50% of the sale price. Sell for 1,000 Robux and you get 500. That means a Limited you bought for 800 has to resell for at least 1,600 before you break even. The rule of thumb is simple: your break-even resale price is double what you paid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Price passes with ceil(target ÷ 0.7), not by eye.&lt;/li&gt;
&lt;li&gt;Keep track of how much of your balance was earned before September 5, 2025.&lt;/li&gt;
&lt;li&gt;Don't plan DevEx around transferred Robux; they can't be exchanged.&lt;/li&gt;
&lt;li&gt;Wait until you clear 30,000 earned Robux before you apply.&lt;/li&gt;
&lt;li&gt;For UGC, test prices at 2x the floor and above before settling on the floor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I got tired of doing these sums in a spreadsheet, so I put them all in one place at &lt;a href="https://gamedevtool.com/roblox" rel="noopener noreferrer"&gt;GameDevTool&lt;/a&gt;. Every calculator is free and needs no login. If any of the numbers above change, tell me in the comments and I'll update the post.&lt;/p&gt;

</description>
      <category>roblox</category>
      <category>gamedev</category>
      <category>beginners</category>
      <category>money</category>
    </item>
    <item>
      <title>Voice prompting for Cursor and Claude Code: how to talk to your AI coding agent (and why typed prompts lose context)</title>
      <dc:creator>Fawwaaz Sheik</dc:creator>
      <pubDate>Thu, 15 Oct 2026 04:33:21 +0000</pubDate>
      <link>https://dev.to/fzsheik/voice-prompting-for-cursor-and-claude-code-how-to-talk-to-your-ai-coding-agent-and-why-typed-124</link>
      <guid>https://dev.to/fzsheik/voice-prompting-for-cursor-and-claude-code-how-to-talk-to-your-ai-coding-agent-and-why-typed-124</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Speaking your prompts to an AI coding agent is faster than typing them, and you naturally include more context: what you tried, what must not change, edge cases. The catch is that raw speech is messy. The fix is a dictation tool that removes the filler but keeps the constraints, plus a simple structure for what you say. This post covers the workflow, the structure, and which Mac tools do it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why are typed prompts often worse than spoken ones?
&lt;/h2&gt;

&lt;p&gt;Typed prompts are short because typing is slow. When you type to Cursor or Claude Code, you skip details: &lt;em&gt;"add search to dashboard"&lt;/em&gt;. The agent then guesses the rest, and you spend the next three turns correcting it.&lt;/p&gt;

&lt;p&gt;When you explain the same change out loud, you say what you'd say to a colleague:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;where the feature goes&lt;/li&gt;
&lt;li&gt;what it should search&lt;/li&gt;
&lt;li&gt;what it must not break&lt;/li&gt;
&lt;li&gt;what happens when nothing matches&lt;/li&gt;
&lt;li&gt;"and please don't add a new library for this"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That extra context is exactly what makes an agent's first attempt land. Most people speak around 130–150 words per minute and type around 40, so speaking a five-sentence brief takes seconds instead of a minute or two.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's wrong with plain dictation for prompts?
&lt;/h2&gt;

&lt;p&gt;Plain speech-to-text writes down &lt;em&gt;everything&lt;/em&gt; you say. Here's a real example of thinking out loud about a feature:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Okay, so, um, I've been looking at the dashboard and thinking about this a bit. Basically, what I mean is, when someone starts typing, the results should narrow down as they go. Maybe that's probably the best place for it, I think, if that makes sense. Oh, and, yeah, one more thing before I forget."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pasted into an agent, that's noisy. The hedging ("maybe", "I think", "probably") can even make the model less decisive. What you actually want the agent to receive is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Add dashboard search with live filtering. Search across names and descriptions. Keep the search field above the table. Preserve the current layout and reuse existing components. Show an empty state when nothing matches. No new dependencies.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Same intent, a third of the words, and every constraint survived. That transformation (filler out, requirements in) is the whole game.&lt;/p&gt;

&lt;h2&gt;
  
  
  A spoken prompt structure that works
&lt;/h2&gt;

&lt;p&gt;You don't need to script yourself, but having a loose order in your head helps. I use &lt;strong&gt;Goal → Where → Rules → Done when&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Part&lt;/th&gt;
&lt;th&gt;What you say&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Goal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The change in one sentence&lt;/td&gt;
&lt;td&gt;"Add live search to the dashboard table."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Where&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Files, components, routes&lt;/td&gt;
&lt;td&gt;"It's in &lt;code&gt;app/dashboard/page.tsx&lt;/code&gt;, reuse the &lt;code&gt;Input&lt;/code&gt; component."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rules&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What must not change, libraries to avoid&lt;/td&gt;
&lt;td&gt;"Don't touch the layout. No new dependencies."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Done when&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;How you'll judge it&lt;/td&gt;
&lt;td&gt;"Empty state when nothing matches, tests still pass."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Speak it in any order you like. A good cleanup step will put it into a clean brief either way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips for speaking technical terms
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Say file paths naturally:&lt;/strong&gt; "app slash dashboard slash page dot tsx" works with most modern models, but it's often easier to say "the dashboard page" and let the agent find it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spell rare identifiers once:&lt;/strong&gt; if a function is called &lt;code&gt;normalizeSKU&lt;/code&gt;, say it plainly; good tools learn your vocabulary over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Say constraints as constraints:&lt;/strong&gt; "must", "don't", "only" survive cleanup much better than "it'd be nice if maybe".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep one task per prompt.&lt;/strong&gt; Speaking makes it tempting to dump five ideas at once. Agents still do best with one clear change.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The workflow: hold, speak, release
&lt;/h2&gt;

&lt;p&gt;The flow that keeps you in the editor:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Put your cursor in the agent's input (Cursor chat/agent panel, Claude Code in the terminal, Codex, ChatGPT, whatever).&lt;/li&gt;
&lt;li&gt;Hold a keyboard shortcut.&lt;/li&gt;
&lt;li&gt;Explain the change out loud like you would to a teammate.&lt;/li&gt;
&lt;li&gt;Release. The cleaned-up prompt appears in the field.&lt;/li&gt;
&lt;li&gt;Skim it, hit Enter.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No copy-paste, no switching windows. The skim in step 5 matters: you're still the reviewer of what goes to the agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Mac tools can do voice prompting?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Cleanup / rewriting&lt;/th&gt;
&lt;th&gt;Where speech is processed&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Apple Dictation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Minimal&lt;/td&gt;
&lt;td&gt;On-device (mostly)&lt;/td&gt;
&lt;td&gt;Free and built in; writes verbatim, filler included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Wispr Flow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Cross-platform, team features&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Superwhisper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes, via custom modes you configure&lt;/td&gt;
&lt;td&gt;Local or cloud&lt;/td&gt;
&lt;td&gt;Very configurable, good for tinkerers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Superquill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes, focused on shorter, clearer prompts&lt;/td&gt;
&lt;td&gt;On-device transcription; only text goes to the cloud (or nothing in Private mode)&lt;/td&gt;
&lt;td&gt;Mac, private beta; free during beta&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://trysuperquill.com/for/developers?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=voice-prompting" rel="noopener noreferrer"&gt;Superquill&lt;/a&gt;.&lt;/em&gt; I built it because I kept running into the problem above: dictation tools wrote down my rambling word for word, and I wanted something that turned a spoken thought into a tight prompt while keeping the file names and "no new dependencies" bits. It also learns the names, projects and phrasing you use, so your teammates' names and your internal jargon come out right.&lt;/p&gt;

&lt;p&gt;If you want a broader, more neutral breakdown of the options, I wrote a &lt;a href="https://trysuperquill.com/blog/best-ai-dictation-apps-mac?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=voice-prompting" rel="noopener noreferrer"&gt;comparison of AI dictation apps for Mac&lt;/a&gt; covering pricing, privacy and platforms.&lt;/p&gt;

&lt;p&gt;Curious where your voice data actually goes? I wrote a &lt;a href="https://dev.to/fzsheik/where-does-your-voice-go-a-developers-privacy-checklist-for-ai-dictation-apps-2m88"&gt;privacy checklist for AI dictation apps&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is voice prompting worth it for developers?
&lt;/h2&gt;

&lt;p&gt;Yes, if you use AI agents for more than one-line edits. The time saved typing is nice, but the real win is &lt;strong&gt;better first attempts&lt;/strong&gt;, because spoken prompts carry the context you'd never bother to type. It also helps if you have RSI or just want to give your hands a break between long sessions.&lt;/p&gt;

&lt;p&gt;It's &lt;em&gt;less&lt;/em&gt; useful for writing actual code character by character. Use your keyboard for code; use your voice for describing code.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can I use voice dictation for coding prompts?
&lt;/h3&gt;

&lt;p&gt;Yes. Any dictation tool that types into the focused text field works with Cursor, Claude Code, Codex and ChatGPT. Tools with an AI cleanup step work best, because they remove filler and turn speech into a structured prompt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does voice dictation work in Cursor and Claude Code?
&lt;/h3&gt;

&lt;p&gt;Yes. System-wide dictation on macOS writes into whatever input has focus, including Cursor's chat and agent panels and terminal apps running Claude Code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is speaking faster than typing prompts?
&lt;/h3&gt;

&lt;p&gt;For most people, yes. Average speaking speed is roughly 130–150 words per minute versus about 40 for typing, and it's easier to include rich context out loud.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is voice dictation private?
&lt;/h3&gt;

&lt;p&gt;It depends on the tool. Some process audio in the cloud; others, like Apple Dictation, Superwhisper's local models and Superquill, transcribe on your Mac so audio never leaves it. Check whether &lt;em&gt;text&lt;/em&gt; is sent to a cloud model for cleanup too, and whether there's an offline mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the best way to structure a spoken prompt?
&lt;/h3&gt;

&lt;p&gt;Say the goal, where the change goes, the rules it must follow, and how you'll know it's done. One task per prompt.&lt;/p&gt;




&lt;p&gt;How are you prompting your agents today: typing, voice, or something else? I'd love to hear what's worked in the comments. 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>vibecoding</category>
      <category>cursor</category>
    </item>
    <item>
      <title>Where does your voice go? A developer's privacy checklist for AI dictation apps</title>
      <dc:creator>Fawwaaz Sheik</dc:creator>
      <pubDate>Thu, 15 Oct 2026 04:33:12 +0000</pubDate>
      <link>https://dev.to/fzsheik/where-does-your-voice-go-a-developers-privacy-checklist-for-ai-dictation-apps-2m88</link>
      <guid>https://dev.to/fzsheik/where-does-your-voice-go-a-developers-privacy-checklist-for-ai-dictation-apps-2m88</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; An AI dictation app has up to three things that can leave your machine: &lt;strong&gt;your audio&lt;/strong&gt;, &lt;strong&gt;the text transcribed from it&lt;/strong&gt;, and &lt;strong&gt;usage data about how you use the app&lt;/strong&gt;. Most privacy marketing only talks about the first. Before you speak prompts, Slack replies or client emails into any tool, find out where each of the three goes, whether it's stored, and whether there's a mode where none of it leaves your device.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why should developers care where dictation goes?
&lt;/h2&gt;

&lt;p&gt;Once voice becomes how you prompt Cursor, Claude Code or ChatGPT, your dictation tool hears everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;internal project and customer names&lt;/li&gt;
&lt;li&gt;descriptions of security bugs before they're fixed&lt;/li&gt;
&lt;li&gt;architecture details, file paths, sometimes a pasted-from-memory API key&lt;/li&gt;
&lt;li&gt;Slack messages about colleagues, emails to clients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A keyboard never sees any of this as data. A dictation app does. That makes it worth the same scrutiny you'd give a browser extension that can read every page.&lt;/p&gt;

&lt;h2&gt;
  
  
  What data does an AI dictation app actually handle?
&lt;/h2&gt;

&lt;p&gt;Break it into layers. Each one can be handled differently, even within the same app.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Audio&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The raw recording of your voice&lt;/td&gt;
&lt;td&gt;The richest data. It can reveal identity, mood, background conversations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Voiceprint&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Biometric characteristics of your voice&lt;/td&gt;
&lt;td&gt;Treated as biometric data under laws like Illinois' BIPA and the GDPR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Transcribed text&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What you said, as words&lt;/td&gt;
&lt;td&gt;Contains everything sensitive you said, just not your voice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI cleanup&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A language model rewriting the text&lt;/td&gt;
&lt;td&gt;Often a &lt;em&gt;separate&lt;/em&gt; cloud call, sometimes to a third-party model provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Analytics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Events about app usage&lt;/td&gt;
&lt;td&gt;Should describe &lt;em&gt;how&lt;/em&gt; you use features, never &lt;em&gt;what&lt;/em&gt; you said&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The common trap: an app says "on-device transcription", which is true, but then sends the transcript to a cloud LLM for the cleanup step. Your audio stayed home; your words didn't. That might be fine for you. You should just know it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 7 questions to ask any dictation app
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Where is speech transcribed?&lt;/strong&gt; On-device, the vendor's cloud, or a third-party speech API?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does audio ever leave the device?&lt;/strong&gt; Including for "quality improvement", debugging or support?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If text goes to the cloud, who processes it?&lt;/strong&gt; The vendor, or a model provider like OpenAI, Anthropic, Groq or Cerebras? That provider's privacy policy applies too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is anything stored server-side?&lt;/strong&gt; Audio, transcripts, outputs, and for how long?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is your content used for training?&lt;/strong&gt; By the vendor &lt;em&gt;and&lt;/em&gt; by any model provider in the chain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is there a fully local mode?&lt;/strong&gt; One switch that guarantees nothing leaves the machine, for the moments that need it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What does analytics collect?&lt;/strong&gt; Feature usage is normal. Transcript content in analytics is not.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If a privacy policy can't answer these, that's your answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do popular Mac dictation apps handle privacy?
&lt;/h2&gt;

&lt;p&gt;Based on each vendor's own site and docs as of October 2026. Policies change, so verify before relying on this for anything regulated.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;App&lt;/th&gt;
&lt;th&gt;Where speech is processed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Apple Dictation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;On-device for many languages on supported hardware; otherwise Apple's servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Wispr Flow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud (offers SOC 2, ISO 27001, HIPAA with a BAA on business plans)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Superwhisper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;On-device or cloud, your choice of model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VoiceInk&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;On-device; optional cloud enhancement sends text only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Willow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud, with an on-device offline mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Aqua Voice&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud; Privacy Mode stores nothing on Aqua's servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monologue&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud and offline transcription; no audio or transcripts saved on its servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Superquill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;On-device transcription; only text goes to the cloud, or nothing in Private mode&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There's no single "most private" answer. A cloud tool with a signed BAA and SOC 2 can be the right call for a healthcare team, and a fully local tool can be the right call for a solo dev who never wants to think about it. Match the tool to your threat model.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Superquill handles it (and what it doesn't claim)
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://trysuperquill.com/privacy?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=privacy" rel="noopener noreferrer"&gt;Superquill&lt;/a&gt;, a voice-to-text app for Mac in private beta.&lt;/em&gt; Here's how it answers the seven questions, including the parts that aren't "nothing ever leaves":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Audio and voiceprints never leave your Mac.&lt;/strong&gt; Speech recognition runs locally. Recordings aren't uploaded, transmitted or stored by us or any provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In standard mode, the transcribed text is sent to Cerebras&lt;/strong&gt; for the AI step that turns rambling speech into a short message or prompt. Text only, never audio. Cerebras' own privacy policy applies to that text, and we link to it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private mode keeps everything on-device.&lt;/strong&gt; Turn it on and the text isn't sent to Cerebras or any other cloud service. Toggle it for the sensitive stuff, like security bugs or client details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;We don't train our own models on your content.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics (PostHog) are for feature usage&lt;/strong&gt;, like which features you use and app version, not what you said or wrote.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The design goal was simple: the most sensitive layer (your voice) never leaves, the next layer (text) leaves only when you allow it and only to one named provider, and there's a one-switch way to keep everything local. The full list of providers and what each one receives is in the &lt;a href="https://trysuperquill.com/privacy?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=privacy" rel="noopener noreferrer"&gt;privacy policy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you dictate prompts to coding agents, see my guide to &lt;a href="https://dev.to/fzsheik/voice-prompting-for-cursor-and-claude-code-how-to-talk-to-your-ai-coding-agent-and-why-typed-124"&gt;voice prompting for Cursor and Claude Code&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical habits for dictating safely
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Never dictate secrets.&lt;/strong&gt; API keys, passwords, tokens. Not into any tool, local or cloud. Type them, or better, reference an env var.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a local mode for sensitive work.&lt;/strong&gt; Incident write-ups, vulnerability details, anything under NDA.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the cleanup provider's policy, not just the app's.&lt;/strong&gt; The app's promise only covers the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check your company policy.&lt;/strong&gt; Many teams already have rules for sending code or customer data to third-party AI. Dictation falls under them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-check after updates.&lt;/strong&gt; Features like "cloud sync" or "history" can quietly change what's stored.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is voice dictation safe for confidential work?
&lt;/h3&gt;

&lt;p&gt;It can be, if speech is transcribed on-device and you use a mode that keeps text local too. Cloud dictation can also be acceptable with the right agreements (SOC 2, a BAA, a no-retention policy), but you should confirm those exist before dictating confidential data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do dictation apps store my voice recordings?
&lt;/h3&gt;

&lt;p&gt;Some do, some don't. On-device apps like Superquill, VoiceInk and local Superwhisper models don't need to send audio anywhere. For cloud apps, check the privacy policy for audio retention and whether recordings are used to improve models.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the difference between on-device transcription and on-device processing?
&lt;/h3&gt;

&lt;p&gt;On-device transcription means your audio is turned into text locally. The text may still be sent to a cloud language model for cleanup or rewriting. Fully on-device processing means both steps happen locally and nothing leaves the machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is my dictation used to train AI models?
&lt;/h3&gt;

&lt;p&gt;It depends on the vendor and on any model provider they use. Look for an explicit statement covering both. Superquill does not use your content to train its own models.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which dictation app works offline on a Mac?
&lt;/h3&gt;

&lt;p&gt;Apple Dictation (for supported languages), Superwhisper with local models, VoiceInk, Willow's offline mode, and Superquill in Private mode can all work without sending your speech to the cloud.&lt;/p&gt;




&lt;p&gt;What's your line for AI tools at work: anything goes, local only, or approved vendors only? Curious how other teams are handling this. 👇&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>security</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I built a private audio transcription tool in browser using Transformers.js</title>
      <dc:creator>Fawwaaz Sheik</dc:creator>
      <pubDate>Fri, 08 May 2026 15:59:34 +0000</pubDate>
      <link>https://dev.to/fzsheik/how-i-built-a-private-audio-transcription-tool-in-browser-using-transformersjs-1fl0</link>
      <guid>https://dev.to/fzsheik/how-i-built-a-private-audio-transcription-tool-in-browser-using-transformersjs-1fl0</guid>
      <description>&lt;p&gt;So my dad needed to transcribe an interview. Simple enough right? Except he refused to upload his voice to any cloud service which honestly makes total sense. I went looking for local options and everything required installing Python, managing dependencies, running terminal commands. An hour of setup minimum. Not happening.&lt;/p&gt;

&lt;p&gt;So instead of doing the setup I just built it. Took about 5 hours. Here's how the whole thing works under the hood.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The core architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The fundamental insight is that you can run Whisper which is the same model powering most cloud transcription services directly in the browser using WebAssembly. No server needed. Transformers.js by Hugging Face handles all the heavy lifting: model downloading, caching, ONNX inference, and audio chunking.&lt;/p&gt;

&lt;p&gt;Here's the high level flow:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Freazy7zye80s6nqxicff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Freazy7zye80s6nqxicff.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why a Web Worker is non-negotiable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the most important architectural decision. Whisper is computationally heavy. If you run it on the main thread your entire UI freezes so then theres no progress bar updates, no animations, nothing. The tab locks until transcription finishes.&lt;/p&gt;

&lt;p&gt;A Web Worker runs on a completely separate thread. Your React UI stays alive and responsive while Whisper churns through the audio in the background. They communicate via &lt;code&gt;postMessage&lt;/code&gt; where the worker fires updates after each 30 second chunk and React renders them as they arrive.&lt;/p&gt;

&lt;p&gt;The two-thread model looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxkomnezw9uvg9f1m3itj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxkomnezw9uvg9f1m3itj.png" alt=" " width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The gotcha nobody tells you about: audio decoding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Whisper doesn't understand MP3 or WAV files directly. It needs raw audio samples, specifically 16,000 samples per second (16kHz mono) as a &lt;code&gt;Float32Array&lt;/code&gt;. So before you even touch Transformers.js you have to decode the file using the browser's &lt;code&gt;AudioContext&lt;/code&gt; API and resample it.&lt;/p&gt;

&lt;p&gt;This is the step that trips everyone up. The worker receives the raw file, not decoded audio. You decode it in the main thread using &lt;code&gt;AudioContext&lt;/code&gt;, resample to 16kHz, then pass the &lt;code&gt;Float32Array&lt;/code&gt; to the worker. Miss this step and Whisper just produces garbage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WebGPU: promising but not ready to hardcode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I spent a while trying to get WebGPU acceleration working. The results were all over the place — Chrome gave me a speedup, Firefox hung for 200 seconds, my own Zen Browser (firefox-based) silently fell back to WASM.&lt;/p&gt;

&lt;p&gt;My conclusion: let Transformers.js auto-detect. Don't hardcode &lt;code&gt;device: 'webgpu'&lt;/code&gt;. On Apple Silicon Macs the unified memory architecture means CPU and GPU share the same pool, so the automatic mode actually balances work across both and ends up faster than forcing either one explicitly. Hardcoding loses you that optimization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real world speed numbers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On a Mac M3 via WASM with the Xenova models, for a 24 second test clip:&lt;/p&gt;

&lt;p&gt;Tiny model: ~2700ms — roughly 7 seconds per minute of audio&lt;br&gt;
Base model: ~8000ms — roughly 20 seconds per minute of audio&lt;br&gt;&lt;br&gt;
Small model: ~35000ms — roughly 90 seconds per minute, slower than realtime&lt;/p&gt;

&lt;p&gt;Tiny is the right default. Most people transcribing interviews or lectures don't need the accuracy difference between tiny and base. Let them upgrade if they want.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The model download UX problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The tiny model is ~40MB on first load. On slow connections that can take a minute. Without clear feedback users think it's broken and close the tab. I added a progress bar with the exact MB count and fun facts that rotate every few seconds during the download. The fun facts are dumb but they work so people stay.&lt;/p&gt;

&lt;p&gt;The key message to show: "This only downloads once future visits are instant." That reframes a one-time annoyance as a feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'd do differently&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Skip building the UI before proving the worker works. I spent time on design before the core was solid. The right order is: get the worker transcribing a test file in the console, build the hook that bridges React and the worker, then build UI around that working foundation.&lt;/p&gt;

&lt;p&gt;Also test on Windows Chrome early. My dev setup is Mac with Zen Browser and I hit WebGPU issues I wouldn't have caught without testing cross-platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Speaker diarization is the most requested feature by far. I noticed every competitor comment thread is full of people wishing for "Speaker A / Speaker B" labels. It's not possible cleanly in the browser yet since pyannote (the standard diarization library) hasn't been ported to Transformers.js, but that's coming but maybe theres an alternative stack we can apply right now.&lt;/p&gt;

&lt;p&gt;Language selection is a quick win, Whisper supports 99 languages natively, just needs a UI selector exposed.&lt;/p&gt;

&lt;p&gt;AI post-processing is the monetization path sending the transcript text (not audio) to an LLM for cleanup, filler word removal, and summaries. Privacy story stays intact since it's just text.&lt;/p&gt;

&lt;p&gt;You can try it at &lt;a href="https://usewhispy.com" rel="noopener noreferrer"&gt;usewhispy.com&lt;/a&gt;. Free, no account, works offline after first load.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>audio</category>
      <category>webgpu</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
