{"id":3846,"date":"2026-10-08T11:03:10","date_gmt":"2026-10-08T11:03:10","guid":{"rendered":"https:\/\/nownodes.io\/blog\/?p=3846"},"modified":"2026-10-08T11:03:12","modified_gmt":"2026-10-08T11:03:12","slug":"how-to-speed-up-or-cancel-a-stuck-ethereum-transaction","status":"publish","type":"post","link":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/","title":{"rendered":"How to Speed Up or Cancel a Stuck Ethereum Transaction"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A stuck Ethereum transaction is one that has been broadcast but sits unconfirmed in the mempool \u2014 the pool of pending transactions waiting to be included in a block \u2014 because its fee is too low for current demand. You can&#8217;t delete a transaction once it&#8217;s out there. But you can replace it: send a new transaction with the same nonce and a higher fee to either push the original through (speed up) or void it (cancel).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Both actions work the same way underneath, and both only work while the transaction is still pending. This guide covers the mechanics, the one-click method in a wallet like MetaMask, and how to do it from code with ethers.js \u2014 including how to estimate gas and read current fees before you resend.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-it-mean-when-an-ethereum-transaction-gets-stuck\">What Does It Mean When an Ethereum Transaction Gets Stuck?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">A transaction is &#8220;stuck&#8221; when it has entered the mempool but keeps getting skipped for inclusion in new blocks. It isn&#8217;t lost and it hasn&#8217;t failed. It&#8217;s simply unattractive to the validators choosing which transactions to confirm next, usually because the fee attached to it no longer matches what the market is paying.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every address has a <em>nonce<\/em>, a counter that goes up by one with each transaction that address sends. Validators process an address&#8217;s transactions in strict nonce order. That one detail is why a single underpriced transaction can freeze everything you try to send afterward.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"why-a-low-fee-leaves-a-transaction-pending\">Why a Low Fee Leaves a Transaction Pending<\/h3>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"1024\" src=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-42-972x1024.png\" alt=\"\" class=\"wp-image-3848\" srcset=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-42-972x1024.png 972w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-42-285x300.png 285w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-42-767x808.png 767w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-42.png 1222w\" sizes=\"auto, (max-width: 972px) 100vw, 972px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Since Ethereum&#8217;s London upgrade, each block carries a <em>base fee<\/em> set by the protocol, plus a <em>priority fee<\/em> (a tip) you add to attract validators. The total you pay is <code>units of gas used \u00d7 (base fee + priority fee)<\/code>, and the base fee is <a href=\"https:\/\/ethereum.org\/developers\/docs\/gas\/\" rel=\"nofollow noopener noreferrer\">burned rather than paid to anyone<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The base fee moves with demand, by up to 12.5% per block according to <a href=\"https:\/\/ethereum.org\/developers\/docs\/gas\/\" rel=\"nofollow noopener noreferrer\">ethereum.org&#8217;s gas documentation<\/a>. Your transaction sets a <code>maxFeePerGas<\/code> \u2014 a ceiling on what you&#8217;ll pay. If congestion pushes the base fee above that ceiling, your transaction can&#8217;t be included until the base fee drops back down. Set the tip too low and validators simply prefer other transactions over yours.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"how-one-nonce-can-block-everything-behind-it\">How One Nonce Can Block Everything Behind It<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Suppose your stuck transaction used nonce 10. Any transaction you send next gets nonce 11, 12, and so on \u2014 and none of them can confirm until nonce 10 does. The network won&#8217;t skip ahead.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So a stuck transaction isn&#8217;t only a problem for that one payment. It holds up the entire queue from your address. Clearing it is often the fastest way to unblock everything waiting behind it.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"can-you-cancel-an-ethereum-transaction-once-its-sent\">Can You Cancel an Ethereum Transaction Once It&#8217;s Sent?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">You can&#8217;t erase a transaction that&#8217;s already in the mempool, but you can override it. The trick is to send a replacement that reuses the same nonce. Because only one transaction per nonce can ever confirm, the network keeps the one with the higher fee and drops the other.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That single mechanism powers both outcomes. Speed up keeps your original intent and just raises the fee. Cancel swaps in a harmless transaction \u2014 a transfer of 0 ETH to yourself \u2014 so the nonce gets consumed without your original action ever executing.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>Speed up<\/th><th>Cancel<\/th><\/tr><\/thead><tbody><tr><td>Goal<\/td><td>Get the original transaction confirmed sooner<\/td><td>Stop the original transaction from executing<\/td><\/tr><tr><td>What you send<\/td><td>The same transaction, with a higher fee<\/td><td>A 0 ETH transfer to your own address<\/td><\/tr><tr><td>Nonce<\/td><td>Same as the stuck transaction<\/td><td>Same as the stuck transaction<\/td><\/tr><tr><td>On-chain result<\/td><td>Your intended action happens, faster<\/td><td>Nothing happens except the replacement&#8217;s fee<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The one hard limit: this only works while the transaction is pending. Once it confirms, there&#8217;s nothing left to replace.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"what-makes-the-network-accept-a-replacement\">What Makes the Network Accept a Replacement?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Two conditions have to hold. The replacement must use the exact nonce of the stuck transaction, and its fee must be meaningfully higher \u2014 not a token increase.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Geth, the execution client most of the network runs, requires a replacement to beat the original by at least 10%. For a modern (EIP-1559) transaction, that applies to <em>both<\/em> fee values: the new <code>maxFeePerGas<\/code> and the new <code>maxPriorityFeePerGas<\/code> each have to be at least 10% above the originals. Miss either and you get a <code>replacement transaction underpriced<\/code> error (code <code>REPLACEMENT_UNDERPRICED<\/code>), which is also <a href=\"https:\/\/support.metamask.io\/manage-crypto\/transactions\/how-to-speed-up-or-cancel-a-pending-transaction\/\" rel=\"nofollow noopener noreferrer\">how MetaMask frames the fix<\/a>: resend with the same nonce and bump the fee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Clearing the 10% bar gets your replacement accepted into the mempool. It doesn&#8217;t guarantee the replacement confirms immediately \u2014 if the base fee is still climbing, you may need to bump again. A common habit is to raise by a bit more than the minimum, around 12% to 15%, to leave some headroom.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"speeding-up-or-cancelling-in-a-wallet-like-metamask\">Speeding Up or Cancelling in a Wallet Like MetaMask<\/h2>\n\n\n<p class=\"wp-block-paragraph\">If you sent the transaction from a wallet, you usually don&#8217;t need any code. MetaMask shows <strong>Speed Up<\/strong> and <strong>Cancel<\/strong> controls next to a pending transaction, and both build the replacement for you with a higher fee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When the built-in buttons aren&#8217;t enough \u2014 say you need an exact nonce \u2014 MetaMask also supports a manual version. You turn on <em>Customize transaction nonce<\/em> in settings, create a new transaction addressed to your own public address, set the same nonce as the stuck one, and raise the priority fee by at least 10%.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One quirk worth knowing: you have to clear a queue from the oldest pending nonce first. Per MetaMask&#8217;s guidance, you can&#8217;t cancel nonce 10 before dealing with nonce 9. For most people, that wallet flow is the whole job. If you send transactions programmatically, you&#8217;ll replace them the same way in code.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-speed-up-a-stuck-transaction-with-ethersjs\">How to Speed Up a Stuck Transaction with ethers.js<\/h2>\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.ethers.org\/v6\/\">ethers.js<\/a> is the library most JavaScript and TypeScript projects use to talk to Ethereum. The examples below use ethers v6 (6.17.0 is the current release as of mid-2026), which uses a flat namespace and native <code>BigInt<\/code> for numbers. You&#8217;ll connect through a provider pointed at an Ethereum endpoint, read the stuck transaction, estimate gas, and resend.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"find-the-stuck-transactions-nonce\">Find the Stuck Transaction&#8217;s Nonce<\/h3>\n\n\n<p class=\"wp-block-paragraph\">The replacement has to reuse the stuck transaction&#8217;s nonce exactly. If you have the original transaction hash, read the nonce straight off it:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { ethers } from \"ethers\";\n\nconst provider = new ethers.JsonRpcProvider(ENDPOINT_URL);\nconst wallet = new ethers.Wallet(PRIVATE_KEY, provider);\n\nconst stuck = await provider.getTransaction(STUCK_TX_HASH);\nconst nonce = stuck.nonce; \/\/ reuse this exact value<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If you don&#8217;t have the hash, <code>provider.getTransactionCount(wallet.address, \"pending\")<\/code> returns the count including pending transactions, which tells you the next free nonce. Pass <code>\"latest\"<\/code> instead and you get only confirmed transactions \u2014 the difference between the two numbers is how many of your transactions are still waiting.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"check-the-gas-limit-and-current-fees\">Check the Gas Limit and Current Fees<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Before resending, work out two separate things: how much work the transaction needs (the gas limit) and what each unit of that work currently costs (the fee). They&#8217;re easy to confuse, but they&#8217;re not the same number.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With ethers you estimate gas using <code>estimateGas<\/code>, which returns the gas <em>limit<\/em> in units \u2014 21,000 for a plain ETH transfer, more for contract calls. <code>getFeeData<\/code> returns the current fee market: a suggested <code>maxFeePerGas<\/code> and <code>maxPriorityFeePerGas<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Gas limit: how much computation the transaction needs\nconst gasLimit = await provider.estimateGas({\n  from: wallet.address,\n  to: stuck.to,\n  value: stuck.value,\n  data: stuck.data,\n});\n\n\/\/ Current fee market\nconst feeData = await provider.getFeeData();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Read these fresh each time you resend. Both values move with network activity, and an estimate from ten minutes ago may already be stale.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"resend-with-the-same-nonce-and-a-higher-fee\">Resend With the Same Nonce and a Higher Fee<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Now rebuild the transaction with the original nonce and fees bumped above the 10% threshold. Here it&#8217;s raised by 12% to stay comfortably clear:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const bump = (value) =&gt; (value * 112n) \/ 100n;\n\nconst replacement = await wallet.sendTransaction({\n  to: stuck.to,\n  value: stuck.value,\n  data: stuck.data,\n  nonce: nonce,                               \/\/ same nonce as the stuck tx\n  gasLimit: gasLimit,\n  maxFeePerGas: bump(stuck.maxFeePerGas),\n  maxPriorityFeePerGas: bump(stuck.maxPriorityFeePerGas),\n});\n\nawait replacement.wait(); \/\/ resolves once the replacement confirms<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Every one of those calls \u2014 reading the stuck transaction, estimating gas, pulling fee data, and broadcasting the replacement \u2014 travels over your connection to Ethereum. If that connection is slow or returns stale numbers, your fee math is working from bad inputs. A provider such as <a href=\"https:\/\/nownodes.io\/\">NOWNodes<\/a> gives you an Ethereum endpoint to point your ethers provider at, so you can read current fees and broadcast the replacement without maintaining your own infrastructure.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-cancel-a-transaction-with-ethersjs\">How to Cancel a Transaction with ethers.js<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Cancelling is the same move with a different payload. Instead of resending your real transaction, you send a do-nothing transaction on the same nonce: 0 ETH to your own address, with empty data and a higher fee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const cancel = await wallet.sendTransaction({\n  to: wallet.address,                         \/\/ send to yourself\n  value: 0n,\n  data: \"0x\",                                 \/\/ empty data\n  nonce: nonce,                               \/\/ the stuck tx's nonce\n  maxFeePerGas: bump(stuck.maxFeePerGas),\n  maxPriorityFeePerGas: bump(stuck.maxPriorityFeePerGas),\n});\n\nawait cancel.wait();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If the cancel confirms first, it claims the nonce and your original transaction can never execute. You still pay the fee for the cancel itself, because it&#8217;s a real transaction that lands on-chain.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"why-a-replacement-can-still-fail\">Why a Replacement Can Still Fail<\/h2>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"1024\" src=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-43-972x1024.png\" alt=\"\" class=\"wp-image-3849\" srcset=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-43-972x1024.png 972w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-43-285x300.png 285w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-43-767x808.png 767w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-43.png 1222w\" sizes=\"auto, (max-width: 972px) 100vw, 972px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Most failed replacements come down to a handful of causes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The fee wasn&#8217;t bumped enough.<\/strong> Both <code>maxFeePerGas<\/code> and <code>maxPriorityFeePerGas<\/code> have to clear the 10% increase. Raising only one triggers <code>replacement transaction underpriced<\/code>.<\/li>\n\n\n\n<li><strong>The base fee keeps climbing.<\/strong> Your replacement was accepted but is now underpriced against a higher base fee. Resend with a larger bump.<\/li>\n\n\n\n<li><strong>The original already confirmed.<\/strong> A confirmed transaction can&#8217;t be replaced. Check its status before trying.<\/li>\n\n\n\n<li><strong>You targeted the wrong nonce.<\/strong> A replacement for nonce 11 does nothing while nonce 10 is still stuck ahead of it. Clear the lowest blocked nonce first.<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n<p class=\"wp-block-paragraph\">A stuck Ethereum transaction is a fee problem, not a dead end. You can&#8217;t delete it, but you can replace it by sending a new transaction on the same nonce with a fee at least 10% higher \u2014 pushing your original through, or cancelling it with a 0 ETH self-transfer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a one-off, the Speed Up and Cancel buttons in a wallet handle it. From code, ethers.js does the same job: find the nonce, estimate gas, read current fees, and resend with a higher bid. Pull the gas and fee numbers fresh each time, give yourself headroom above the minimum, and make sure the connection feeding those numbers is reliable.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n<h3 class=\"wp-block-heading\" id=\"how-long-can-an-ethereum-transaction-stay-stuck\">How long can an Ethereum transaction stay stuck?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s no fixed expiry. A pending transaction can sit for hours or days, and clients may eventually drop it from the mempool \u2014 but that isn&#8217;t guaranteed, and it can be rebroadcast. The dependable fix is to replace it rather than wait it out.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"does-cancelling-a-transaction-cost-a-fee\">Does cancelling a transaction cost a fee?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Yes. A cancel is a real on-chain transaction (a 0 ETH transfer to yourself), so you pay gas for it \u2014 21,000 units at the current fee. You&#8217;re paying to occupy the nonce, not to send value.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"can-i-speed-up-a-transaction-after-its-confirmed\">Can I speed up a transaction after it&#8217;s confirmed?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">No. Speed up and cancel only work while a transaction is pending. Once it&#8217;s confirmed, it&#8217;s final, and there&#8217;s nothing left in the mempool to replace.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"do-these-steps-work-on-other-evm-networks\">Do these steps work on other EVM networks?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Largely, yes. The same-nonce, higher-fee replacement model applies across EVM-compatible networks such as BNB Smart Chain, Polygon, Arbitrum, and Base, and MetaMask exposes speed-up and cancel on them too. The exact fee thresholds can vary by network, but the method is the same.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A stuck Ethereum transaction is one that has been broadcast but sits unconfirmed in the mempool \u2014 the pool of pending transactions waiting to be included in a block \u2014 because its fee is too low for current demand. You can&#8217;t delete a transaction once it&#8217;s out there. But you can replace it: send a [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":3847,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","_lmt_disableupdate":"","_lmt_disable":"","_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3846","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Speed Up or Cancel a Stuck Ethereum Transaction (ethers.js)<\/title>\n<meta name=\"description\" content=\"A stuck Ethereum transaction can be replaced, not deleted. Learn how to speed it up or cancel it using the same nonce and a higher fee \u2014 in MetaMask or with ethers.js.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Speed Up or Cancel a Stuck Ethereum Transaction (ethers.js)\" \/>\n<meta property=\"og:description\" content=\"A stuck Ethereum transaction can be replaced, not deleted. Learn how to speed it up or cancel it using the same nonce and a higher fee \u2014 in MetaMask or with ethers.js.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/\" \/>\n<meta property=\"og:site_name\" content=\"NOWNodes Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-08T11:03:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-08T11:03:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/nodes_1-90.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"\u0410nastasia\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nownodes\" \/>\n<meta name=\"twitter:site\" content=\"@nownodes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u0410nastasia\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/\"},\"author\":{\"name\":\"\u0410nastasia\",\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/person\/0890ec68e813adecb93c18ee00e1e7a8\"},\"headline\":\"How to Speed Up or Cancel a Stuck Ethereum Transaction\",\"datePublished\":\"2026-10-08T11:03:10+00:00\",\"dateModified\":\"2026-10-08T11:03:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/\"},\"wordCount\":1742,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/nownodes.io\/blog\/#organization\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/\",\"url\":\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/\",\"name\":\"Speed Up or Cancel a Stuck Ethereum Transaction (ethers.js)\",\"isPartOf\":{\"@id\":\"https:\/\/nownodes.io\/blog\/#website\"},\"datePublished\":\"2026-10-08T11:03:10+00:00\",\"dateModified\":\"2026-10-08T11:03:12+00:00\",\"description\":\"A stuck Ethereum transaction can be replaced, not deleted. Learn how to speed it up or cancel it using the same nonce and a higher fee \u2014 in MetaMask or with ethers.js.\",\"breadcrumb\":{\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/nownodes.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Uncategorized\",\"item\":\"https:\/\/nownodes.io\/blog\/category\/uncategorized\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Speed Up or Cancel a Stuck Ethereum Transaction\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nownodes.io\/blog\/#website\",\"url\":\"https:\/\/nownodes.io\/blog\/\",\"name\":\"NOWNodes Blog\",\"description\":\"Your first-to-go source of development guides, web3 analytics and most recent news about NOWNodes\",\"publisher\":{\"@id\":\"https:\/\/nownodes.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nownodes.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nownodes.io\/blog\/#organization\",\"name\":\"NOWNodes Blog\",\"url\":\"https:\/\/nownodes.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2024\/02\/cropped-New-Logo-NN.png\",\"contentUrl\":\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2024\/02\/cropped-New-Logo-NN.png\",\"width\":1164,\"height\":1164,\"caption\":\"NOWNodes Blog\"},\"image\":{\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/twitter.com\/nownodes\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/person\/0890ec68e813adecb93c18ee00e1e7a8\",\"name\":\"\u0410nastasia\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1de24ab8dcdd7ec30f6adaf78b56bc1eda421f87575b7e103c8fc3fc4420e833?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1de24ab8dcdd7ec30f6adaf78b56bc1eda421f87575b7e103c8fc3fc4420e833?s=96&d=mm&r=g\",\"caption\":\"\u0410nastasia\"},\"url\":\"https:\/\/nownodes.io\/blog\/author\/nasty-nownodes\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Speed Up or Cancel a Stuck Ethereum Transaction (ethers.js)","description":"A stuck Ethereum transaction can be replaced, not deleted. Learn how to speed it up or cancel it using the same nonce and a higher fee \u2014 in MetaMask or with ethers.js.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/","og_locale":"en_US","og_type":"article","og_title":"Speed Up or Cancel a Stuck Ethereum Transaction (ethers.js)","og_description":"A stuck Ethereum transaction can be replaced, not deleted. Learn how to speed it up or cancel it using the same nonce and a higher fee \u2014 in MetaMask or with ethers.js.","og_url":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/","og_site_name":"NOWNodes Blog","article_published_time":"2026-10-08T11:03:10+00:00","article_modified_time":"2026-10-08T11:03:12+00:00","og_image":[{"width":2400,"height":1200,"url":"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/nodes_1-90.jpg","type":"image\/jpeg"}],"author":"\u0410nastasia","twitter_card":"summary_large_image","twitter_creator":"@nownodes","twitter_site":"@nownodes","twitter_misc":{"Written by":"\u0410nastasia","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/#article","isPartOf":{"@id":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/"},"author":{"name":"\u0410nastasia","@id":"https:\/\/nownodes.io\/blog\/#\/schema\/person\/0890ec68e813adecb93c18ee00e1e7a8"},"headline":"How to Speed Up or Cancel a Stuck Ethereum Transaction","datePublished":"2026-10-08T11:03:10+00:00","dateModified":"2026-10-08T11:03:12+00:00","mainEntityOfPage":{"@id":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/"},"wordCount":1742,"commentCount":0,"publisher":{"@id":"https:\/\/nownodes.io\/blog\/#organization"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/","url":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/","name":"Speed Up or Cancel a Stuck Ethereum Transaction (ethers.js)","isPartOf":{"@id":"https:\/\/nownodes.io\/blog\/#website"},"datePublished":"2026-10-08T11:03:10+00:00","dateModified":"2026-10-08T11:03:12+00:00","description":"A stuck Ethereum transaction can be replaced, not deleted. Learn how to speed it up or cancel it using the same nonce and a higher fee \u2014 in MetaMask or with ethers.js.","breadcrumb":{"@id":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nownodes.io\/blog\/how-to-speed-up-or-cancel-a-stuck-ethereum-transaction\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/nownodes.io\/blog"},{"@type":"ListItem","position":2,"name":"Uncategorized","item":"https:\/\/nownodes.io\/blog\/category\/uncategorized"},{"@type":"ListItem","position":3,"name":"How to Speed Up or Cancel a Stuck Ethereum Transaction"}]},{"@type":"WebSite","@id":"https:\/\/nownodes.io\/blog\/#website","url":"https:\/\/nownodes.io\/blog\/","name":"NOWNodes Blog","description":"Your first-to-go source of development guides, web3 analytics and most recent news about NOWNodes","publisher":{"@id":"https:\/\/nownodes.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nownodes.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nownodes.io\/blog\/#organization","name":"NOWNodes Blog","url":"https:\/\/nownodes.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nownodes.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2024\/02\/cropped-New-Logo-NN.png","contentUrl":"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2024\/02\/cropped-New-Logo-NN.png","width":1164,"height":1164,"caption":"NOWNodes Blog"},"image":{"@id":"https:\/\/nownodes.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/nownodes"]},{"@type":"Person","@id":"https:\/\/nownodes.io\/blog\/#\/schema\/person\/0890ec68e813adecb93c18ee00e1e7a8","name":"\u0410nastasia","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nownodes.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1de24ab8dcdd7ec30f6adaf78b56bc1eda421f87575b7e103c8fc3fc4420e833?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1de24ab8dcdd7ec30f6adaf78b56bc1eda421f87575b7e103c8fc3fc4420e833?s=96&d=mm&r=g","caption":"\u0410nastasia"},"url":"https:\/\/nownodes.io\/blog\/author\/nasty-nownodes"}]}},"modified_by":"\u0410nastasia","_links":{"self":[{"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/posts\/3846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/comments?post=3846"}],"version-history":[{"count":1,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/posts\/3846\/revisions"}],"predecessor-version":[{"id":3850,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/posts\/3846\/revisions\/3850"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/media\/3847"}],"wp:attachment":[{"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/media?parent=3846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/categories?post=3846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/tags?post=3846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}