[{"data":1,"prerenderedAt":322},["ShallowReactive",2],{"blog-post-docs\u002Ferror-mitigation":3,"sibling-dives-docs\u002Ferror-mitigation":320,"learn-track-docs\u002Ferror-mitigation":321},{"id":4,"title":5,"authors":6,"body":7,"breadcrumb":6,"builders":6,"byline":6,"category":303,"categoryName":304,"challenge":6,"courseAuthor":6,"courseLead":6,"dek":6,"description":305,"draft":306,"extension":307,"eyebrow":6,"featured":306,"finish":6,"fork":6,"hero":6,"heroAlt":6,"heroCta":6,"heroImage":6,"homepageFeatured":306,"kind":308,"lessonCount":6,"meta":309,"navigation":104,"newsItems":6,"next":6,"ogImage":6,"order":310,"outcomes":6,"path":311,"publishDate":312,"readingTime":6,"related":313,"relatedProjects":6,"seo":314,"stem":317,"tags":318,"track":6,"trackName":6,"__hash__":319},"blog\u002Fblog\u002Flearn\u002Fdocs\u002Ferror-mitigation.md","Error mitigation and debiasing",null,{"type":8,"value":9,"toc":295},"minimark",[10,14,17,20,23,28,31,34,52,55,59,66,160,163,167,170,173,176,180,183,186,227,230,233,236,239,243,246,253,257,283,291],[11,12,13],"p",{},"Debiasing is IonQ's built-in error mitigation, and it works at the compiler level. Instead of running one implementation of your circuit, IonQ creates many symmetric variations of it and runs those.",[11,15,16],{},"The idea is that a circuit can be implemented several equivalent ways, using different qubits and different gate decompositions, and each way carries a slightly different systematic bias. Run the variations and average them, and biases that depend on the particular implementation tend to cancel.",[11,18,19],{},"It does not fix everything, and IonQ does not claim it does. Debiasing targets systematic error, the kind that comes from how a particular implementation maps onto the machine. Error that is not implementation-dependent is untouched by it, so a debiased result is still a noisy result. It can be combined with other error mitigation techniques rather than replacing them.",[11,21,22],{},"Debiasing is available on all IonQ QPUs. It is not currently available on IonQ's cloud simulator, including the simulator with a noise model.",[24,25,27],"h2",{"id":26},"the-500-shot-floor","The 500-shot floor",[11,29,30],{},"This is the part that catches people, because it interacts with a Qollab default.",[11,32,33],{},"For a job submitted in standard gates, IonQ enables debiasing by default at 500 shots or more, and it can be turned off. Below that it is not an option at all: with fewer than 500 shots debiasing is disabled automatically and cannot be turned on. A debiased job is divided into 25 executions, each one a different but equivalent implementation of the same circuit. A small shot budget therefore leaves each execution with too few shots to mean anything.",[11,35,36,40,41,45,46,51],{},[37,38,39],"strong",{},"Shots come from your code, not from a control in the runner."," Pass them to the run call. Leave the argument out and the backend's default applies, which is 1024, so debiasing is on unless you ask for fewer than 500. Set ",[42,43,44],"code",{},"shots=100"," and it cannot run, and that is a limit rather than a misconfiguration. See ",[47,48,50],"a",{"href":49},"\u002Flearn\u002Fdocs\u002Frun-your-code","Running your code",".",[11,53,54],{},"If you are writing your circuit with native gates rather than standard ones, the default flips: debiasing is off, and it can be switched on once the job has 500 shots or more. IonQ notes that you may want it on for a native-gate job if you are after maximum performance, and may prefer it off if your experiment requires a consistent qubit mapping.",[24,56,58],{"id":57},"turning-it-off","Turning it off",[11,60,61,62,65],{},"Debiasing is set in code when you submit the job, not in a settings panel. On Qollab the ",[42,63,64],{},"backend"," is already created for you, so the run call is the only line that changes:",[67,68,71],"code-block",{"name":69,"tag":70},"no_debiasing.py","Python · excerpt",[72,73,78],"pre",{"className":74,"code":75,"language":76,"meta":77,"style":77},"language-python shiki shiki-themes one-dark-pro","from qiskit_ionq import ErrorMitigation\n\n# `backend` is pre-created in the Qollab Playground.\njob = backend.run(qc, shots=1000, error_mitigation=ErrorMitigation.NO_DEBIASING)\n","python","",[42,79,80,99,106,113],{"__ignoreMap":77},[81,82,85,89,93,96],"span",{"class":83,"line":84},"line",1,[81,86,88],{"class":87},"seHd6","from",[81,90,92],{"class":91},"sn6KH"," qiskit_ionq ",[81,94,95],{"class":87},"import",[81,97,98],{"class":91}," ErrorMitigation\n",[81,100,102],{"class":83,"line":101},2,[81,103,105],{"emptyLinePlaceholder":104},true,"\n",[81,107,109],{"class":83,"line":108},3,[81,110,112],{"class":111},"sV9Aq","# `backend` is pre-created in the Qollab Playground.\n",[81,114,116,119,123,126,130,133,137,139,143,146,149,151,154,157],{"class":83,"line":115},4,[81,117,118],{"class":91},"job ",[81,120,122],{"class":121},"sjrmR","=",[81,124,125],{"class":91}," backend.",[81,127,129],{"class":128},"sVbv2","run",[81,131,132],{"class":91},"(qc, ",[81,134,136],{"class":135},"s_ZVi","shots",[81,138,122],{"class":121},[81,140,142],{"class":141},"sVC51","1000",[81,144,145],{"class":91},", ",[81,147,148],{"class":135},"error_mitigation",[81,150,122],{"class":121},[81,152,153],{"class":91},"ErrorMitigation.",[81,155,156],{"class":141},"NO_DEBIASING",[81,158,159],{"class":91},")\n",[11,161,162],{},"In general IonQ recommends keeping debiasing on for medium and large circuits, to maximise performance, since job cost is not affected in those cases. For very shallow circuits or small test jobs, turning it off can give similar results while conserving credit. Cost is covered below.",[24,164,166],{"id":165},"how-the-executions-are-combined","How the executions are combined",[11,168,169],{},"A debiased job runs 25 variations, so something has to turn 25 sets of measurements into one answer. That step is aggregation, and it has a default you get without asking.",[11,171,172],{},"By default the measurements from every execution are combined directly into a single histogram, and the distribution you read is the average across all of them. The individual executions are not returned separately, so you see one result, not 25.",[11,174,175],{},"That default suits any algorithm or result type, which is why it is the default. Sharpening, below, is the alternative to it.",[24,177,179],{"id":178},"sharpening","Sharpening",[11,181,182],{},"Sharpening is an optional second way of aggregating the same executions. Debiasing is what makes it possible, because it is what splits the job up in the first place, but a debiased job does not have to use it and most should not.",[11,184,185],{},"The timing differs too. Debiasing is fixed when you submit the job; sharpening is chosen later, when you retrieve the result, so it post-processes counts that already exist. The other name for it is plurality voting: instead of averaging, all counts from each execution are assigned to that execution's highest-probability bitstring.",[67,187,189],{"name":188,"tag":70},"sharpen.py",[72,190,192],{"className":74,"code":191,"language":76,"meta":77,"style":77},"counts = job.result(sharpen=True).get_counts()\n",[42,193,194],{"__ignoreMap":77},[81,195,196,199,201,204,207,210,213,215,218,221,224],{"class":83,"line":84},[81,197,198],{"class":91},"counts ",[81,200,122],{"class":121},[81,202,203],{"class":91}," job.",[81,205,206],{"class":128},"result",[81,208,209],{"class":91},"(",[81,211,212],{"class":135},"sharpen",[81,214,122],{"class":121},[81,216,217],{"class":141},"True",[81,219,220],{"class":91},").",[81,222,223],{"class":128},"get_counts",[81,225,226],{"class":91},"()\n",[11,228,229],{},"Sharpening is opt-in, and it only applies to a job that ran with debiasing. Request a sharpened result from a job that ran without it and you get an error.",[11,231,232],{},"Read IonQ's limits before reaching for it, because it fits a narrow shape of result. It suits a job whose expected distribution is one high-probability state, or a small handful of them, or a job where the question is simply which state is most probable. On those, sharpening can amplify the signal you want and strip counts from low-probability states.",[11,234,235],{},"A more complex probability distribution is a different case. Where you need to quantify the relative probabilities of several different states, sharpening will not improve the result, and IonQ warns that it could distort the true distribution and should not be used there. Plurality voting collapses each execution to a single bitstring, and that is the detail those questions depend on. The exception is an execution with no clear highest-probability bitstring, whose shots are counted as they are.",[11,237,238],{},"So sharpening helps when your circuit has one right answer and you want it to stand out. Where the shape of the distribution is the result you are after, IonQ's guidance is to leave it off.",[24,240,242],{"id":241},"what-debiasing-costs","What debiasing costs",[11,244,245],{},"Debiasing does not add circuits, shots or qubits to your job, and the gate count changes only a small amount, because the variations use different gate decompositions. What it does add is a small amount of classical overhead, and on a small job, meaning few gates or few shots or both, that overhead can be relatively significant. IonQ accounts for it by setting a higher minimum per-circuit-job cost for a system when debiasing is enabled. Larger jobs are already above that minimum, so their cost is not affected.",[11,247,248,249,51],{},"That is IonQ's pricing of the underlying job, not your Qollab credit charge. What you are asked to approve, and when, is covered in ",[47,250,252],{"href":251},"\u002Flearn\u002Fdocs\u002Fhow-credits-work","How credits work",[24,254,256],{"id":255},"related","Related",[258,259,260,267,273,277],"ul",{},[261,262,263],"li",{},[47,264,266],{"href":265},"\u002Flearn\u002Fdocs\u002Fhow-your-circuit-is-compiled","How your circuit is compiled",[261,268,269],{},[47,270,272],{"href":271},"\u002Flearn\u002Fdocs\u002Fcompute-backends","Compute backends",[261,274,275],{},[47,276,252],{"href":251},[261,278,279],{},[47,280,282],{"href":281},"\u002Flearn\u002Fdocs\u002Ferror-reference","Error reference",[11,284,285,286,290],{},"Debiasing and sharpening behaviour on this page is from IonQ's ",[47,287,289],{"href":288},"https:\u002F\u002Fdocs.ionq.com\u002Ffeatures\u002Ferror-mitigation-debiasing","error mitigation guide",", the source of truth. Crawled 2026-09-09.",[292,293,294],"style",{},"html pre.shiki code .seHd6, html code.shiki .seHd6{--shiki-default:#C678DD}html pre.shiki code .sn6KH, html code.shiki .sn6KH{--shiki-default:#ABB2BF}html pre.shiki code .sV9Aq, html code.shiki .sV9Aq{--shiki-default:#7F848E;--shiki-default-font-style:italic}html pre.shiki code .sjrmR, html code.shiki .sjrmR{--shiki-default:#56B6C2}html pre.shiki code .sVbv2, html code.shiki .sVbv2{--shiki-default:#61AFEF}html pre.shiki code .s_ZVi, html code.shiki .s_ZVi{--shiki-default:#E06C75;--shiki-default-font-style:italic}html pre.shiki code .sVC51, html code.shiki .sVC51{--shiki-default:#D19A66}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":77,"searchDepth":101,"depth":101,"links":296},[297,298,299,300,301,302],{"id":26,"depth":101,"text":27},{"id":57,"depth":101,"text":58},{"id":165,"depth":101,"text":166},{"id":178,"depth":101,"text":179},{"id":241,"depth":101,"text":242},{"id":255,"depth":101,"text":256},"running-code","Running code","Debiasing runs symmetric variations of your circuit to cancel systematic error. It needs 500 shots or more, which the default of 1024 clears.",false,"md","doc",{},8,"\u002Fblog\u002Flearn\u002Fdocs\u002Ferror-mitigation","2026-09-09",[],{"title":315,"description":316},"Error mitigation and debiasing · Qollab docs","How IonQ debiasing and sharpening work, the 500-shot minimum, and how to turn debiasing off from your code.","blog\u002Flearn\u002Fdocs\u002Ferror-mitigation",[],"yEKJ1B7btO-83wklXYC6dnHw-lfpCelF5AYXlbZ9fBc",[],[],1788994898724]