{"product_id":"used-mizuno-tp-mills-4-putter-right-handed-35-in-blade","title":"Used Mizuno TP Mills 4 Putter - Right-Handed - 35 in - Blade","description":"\u003cstyle\u003e\n\/* Force a real 2-column grid on THIS list only, overriding the theme *\/\n#product-desc-list{\n  display:grid !important;\n  grid-template-columns:1fr 1fr;\n  gap:0;\n  list-style:none;\n  margin:0 0 16px 0;\n  padding:0;\n  column-count:initial !important; \/* kill multi-column layout *\/\n}\n#product-desc-list \u003e li{\n  margin:0 !important;\n  padding:6px !important;\n  border-bottom:1px solid #d9d9d9 !important;\n  float:none !important;          \/* kill float layouts *\/\n  width:auto !important;          \/* kill width:50% rules *\/\n}\n#product-desc-list \u003e li._left { border-right:1px solid #d9d9d9 !important; }\n\u003c\/style\u003e\n\n\u003cul id=\"product-desc-list\" style=\"visibility:hidden\"\u003e\n    \u003cli\u003e\n\u003cb\u003eClub Condition:\u003c\/b\u003e Excellent\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eHandedness:\u003c\/b\u003e Right-Handed\u003c\/li\u003e\n\n\n\n\u003cli\u003e\n\u003cb\u003eLength:\u003c\/b\u003e\n  \u003ca href=\"#\" onclick=\"document.getElementById('lengthChartModal').showModal();return false;\"\u003e\n    35 in\n  \u003c\/a\u003e\n\u003c\/li\u003e\n\n\u003cdialog id=\"lengthChartModal\" class=\"length-modal\" onclick=\"if(event.target===this) this.close();\"\u003e\n  \u003cdiv class=\"length-card\"\u003e\n    \u003cbutton type=\"button\" class=\"length-close\" aria-label=\"Close\" onclick=\"this.closest('dialog').close()\"\u003e✕\u003c\/button\u003e\n    \u003cimg id=\"chart-img\" src=\"\/\/nextroundgolf.com\/cdn\/shop\/files\/Putter_Standard_Lengths.png?v=1740172449\u0026amp;width=1640\" alt=\"Putter Standard Lengths\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003cstyle\u003e\n  \/* Force true centering and sit above theme layers *\/\n  #lengthChartModal.length-modal{\n    position: fixed !important;\n    inset: 50% auto auto 50% !important;\n    transform: translate(-50%, -50%) !important;\n    margin: 0 !important; padding: 0 !important; border: none !important;\n    background: transparent !important;\n    z-index: 999999 !important;\n  }\n  #lengthChartModal::backdrop{ background: rgba(0,0,0,.65); }\n\n  \/* The visible card (bigger + scroll-safe) *\/\n  #lengthChartModal .length-card{\n    position: relative;\n    width: min(90vw, 600px);     \/* \u003c- adjust this for desktop width *\/\n    max-height: 80vh;\n    background: #fff; border-radius: 12px;\n    box-shadow: 0 10px 30px rgba(0,0,0,.35);\n    overflow: hidden;\n  }\n\n  \/* Make image fill card; ignore any width\/height attrs *\/\n  #lengthChartModal img{\n    display: block;\n    width: 100% !important;\n    height: auto !important;\n    max-height: 80vh !important;\n    object-fit: contain;\n  }\n\n  \/* Close button INSIDE the card so it can’t be clipped *\/\n  #lengthChartModal .length-close{\n    position: absolute;\n    top: 8px; right: 8px;\n    width: 36px; height: 36px; border-radius: 999px;\n    border: 2px solid rgba(0,0,0,.2);\n    background: #fff; font-size: 20px; line-height: 1; cursor: pointer;\n    box-shadow: 0 2px 8px rgba(0,0,0,.15);\n  }\n\u003c\/style\u003e\n\n\n\n\n    \u003cli\u003e\n\u003cb\u003eShaft Material:\u003c\/b\u003e Steel\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eGrip Condition:\u003c\/b\u003e Average Wear\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eGrip Size:\u003c\/b\u003e Standard\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eHeadcover Included?:\u003c\/b\u003e No\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cscript\u003e\n(function () {\n  \/\/ --- NEW LOGIC START ---\n  \/\/ 1. Capture the department variable\n  const department = \"Men\"; \n  \n  \/\/ 2. Identify the image element\n  const chartImg = document.getElementById('chart-img');\n  \n  \/\/ 3. Define the Women's Chart URL (from your thirteenth link)\n  const womenChartUrl = \"https:\/\/cdn.shopify.com\/s\/files\/1\/0601\/0165\/6746\/files\/Women_s_Putter_Standard_Lengths.png?v=1771424026\u0026width=1640\";\n\n  \/\/ 4. If the department is exactly \"Women\", swap the source\n  if (chartImg \u0026\u0026 department.trim() === 'Women') {\n    chartImg.src = womenChartUrl;\n    chartImg.alt = \"Women's Putter Standard Lengths\";\n  }\n  \/\/ --- NEW LOGIC END ---\n\n  const ul = document.getElementById('product-desc-list');\n  if (!ul) return;\n\n  function pruneAndLayout(){\n    \/\/ Remove empty\/unspecified rows instead of hiding them\n    const items = Array.from(ul.querySelectorAll('li'));\n    let kept = [];\n    items.forEach(li =\u003e {\n      const label = li.querySelector('b');\n      const labelText = label ? label.textContent : '';\n      const valueOnly = label\n        ? li.textContent.replace(labelText, '').trim()\n        : li.textContent.trim();\n\n      const emptyish =\n        valueOnly === '' ||\n        valueOnly === '°' ||\n        \/^(Not Specified|Not Specified°|Unspecified|Not Applicable|N\\\/A|NA)$\/i.test(valueOnly);\n\n      if (emptyish) li.remove();\n      else kept.push(li);\n    });\n\n    \/\/ Re-mark visible items as left\/right cells so borders line up\n    kept = Array.from(ul.querySelectorAll('li')); \/\/ in case we removed some\n    kept.forEach((li, i) =\u003e {\n      li.classList.toggle('_left',  i % 2 === 0);\n      li.classList.toggle('_right', i % 2 === 1);\n    });\n\n    \/\/ If odd count, add a blank cell so the last row closes cleanly\n    if (kept.length % 2 === 1) {\n      const filler = document.createElement('li');\n      filler.innerHTML = '';\n      ul.appendChild(filler);\n      filler.classList.add('_right');\n    }\n\n    \/\/ Show after we’re done so there’s no flash\n    ul.style.visibility = 'visible';\n  }\n\n  \/\/ Run immediately (before most theme scripts finish)\n  pruneAndLayout();\n\n  \/\/ Guard: if the theme reflows\/rewrites after our run, fix it again\n  const mo = new MutationObserver(() =\u003e pruneAndLayout());\n  mo.observe(ul, { childList: true, subtree: false, attributes: false });\n})();\n\u003c\/script\u003e\n\n\n\n\u003cstyle\u003e\n  \/*\n   * The theme duplicates the description for desktop tabs and\n   * mobile accordions. Hide empty copies and show every copy that\n   * actually contains a video iframe.\n   *\/\n  .nr-product-video {\n    display: none;\n    margin: 4px 0 32px;\n  }\n\n  .nr-product-video:has(iframe),\n  .nr-product-video.is-ready {\n    display: block !important;\n  }\n\n  .nr-product-video__title {\n    margin: 0 0 14px;\n    text-align: left;\n    color: inherit;\n    font-size: inherit;\n    font-weight: inherit;\n    line-height: inherit;\n  }\n\n  .nr-product-video__frame {\n    position: relative;\n    width: 100%;\n    max-width: 720px;\n    margin: 0;\n    overflow: hidden;\n    aspect-ratio: 16 \/ 9;\n    border-radius: 12px;\n    background: #000000;\n  }\n\n  .nr-product-video__frame iframe {\n    position: absolute !important;\n    inset: 0 !important;\n    display: block !important;\n    width: 100% !important;\n    height: 100% !important;\n    max-width: none !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    border: 0 !important;\n  }\n\n  @media screen and (max-width: 749px) {\n    .nr-product-video {\n      margin: 4px 0 24px;\n    }\n\n    .nr-product-video__title {\n      margin-bottom: 12px;\n      font-size: inherit;\n    }\n\n    .nr-product-video__frame {\n      max-width: 100%;\n      border-radius: 10px;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"nr-desc\"\u003e\n  \u003cdiv class=\"section hide-if-empty\" data-val=\"The Mizuno TPM 4 Putter is a high-performance used golf club that combines modern technology with affordability. This club is designed with a unique balance technology that enhances control and precision, making it ideal for golfers seeking to improve their short game. The Mizuno TPM 4 Putter is not only affordable but also offers a high level of performance, making it a valuable addition to any golfer's bag. Its advanced design and technology make it a perfect choice for both novice and experienced golfers. With the Mizuno TPM 4 Putter, golfers can expect to see an improvement in their game without breaking the bank.\"\u003e\n    The Mizuno TPM 4 Putter is a high-performance used golf club that combines modern technology with affordability. This club is designed with a unique balance technology that enhances control and precision, making it ideal for golfers seeking to improve their short game. The Mizuno TPM 4 Putter is not only affordable but also offers a high level of performance, making it a valuable addition to any golfer's bag. Its advanced design and technology make it a perfect choice for both novice and experienced golfers. With the Mizuno TPM 4 Putter, golfers can expect to see an improvement in their game without breaking the bank.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section hide-if-empty\" data-val=\"This putter shows light face and insert wear, along with minor paint chips and scratches on the head. Overall, it remains in excellent condition, suitable for continued use.\"\u003e\n    This putter shows light face and insert wear, along with minor paint chips and scratches on the head. Overall, it remains in excellent condition, suitable for continued use.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n\u003cdiv class=\"nr-product-video\"\u003e\n    \u003cdiv class=\"nr-product-video__title\"\u003e\n      \u003cb\u003e\u003cu\u003eClub Model Overview\u003c\/u\u003e\u003c\/b\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nr-product-video__frame\"\u003e\n      \n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv id=\"pured-shaft-section\" class=\"section\" style=\"display:none;\"\u003e\n    \u003cb\u003e\u003cu\u003ePured Shaft Upgrade\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n    \u003cspan id=\"pured-shaft-text\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section hide-if-empty\" data-val=\"Our Next Round Golf club experts recommend the Mizuno TPM 4 Putter for golfers seeking to improve their short game. This club is designed with a precision milled face, providing exceptional feel and control. The TPM 4 Putter's balanced weight distribution enhances stability, making it easier to maintain a consistent stroke. We believe this putter could be a game-changer for those looking to lower their scores on the green.\"\u003e\n    \u003cb\u003e\u003cu\u003eOur Recommendation\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n    Our Next Round Golf club experts recommend the Mizuno TPM 4 Putter for golfers seeking to improve their short game. This club is designed with a precision milled face, providing exceptional feel and control. The TPM 4 Putter's balanced weight distribution enhances stability, making it easier to maintain a consistent stroke. We believe this putter could be a game-changer for those looking to lower their scores on the green.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section hide-if-empty\" data-val=\"Mizuno is revered for its forged irons, known for buttery feel and elegant shaping. With a strong tour presence and loyal following, Mizuno appeals to golfers who prioritize precision, feedback, and shot-making ability.\"\u003e\n    \u003cb\u003e\u003cu\u003eAbout Mizuno\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n    Mizuno is revered for its forged irons, known for buttery feel and elegant shaping. With a strong tour presence and loyal following, Mizuno appeals to golfers who prioritize precision, feedback, and shot-making ability.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section\"\u003e\n    \u003cb\u003e\u003cu\u003ePlaying It Forward\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n    By choosing this premium used putter, you're not only investing in your own game but also contributing to Next Round Golf's mission of making golf more affordable and accessible for enthusiasts at every skill level. You’re joining a passionate community dedicated to sustainability, continuous improvement, and the shared joy of discovering new potential on the course.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section\"\u003e\n    \u003cb\u003e\u003cu\u003eNext Round Guarantee\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n    With over 18,000 five star reviews and a 30 day money back guarantee, you can trust Next Round Golf for high-quality used Mizuno golf clubs.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section\"\u003eStock # S2026-08-25-499208\u003c\/div\u003e\n  \u003cdiv class=\"section\"\u003eMaster SKU # 1003930\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  \/\/ Read the template variable\n  const pured = \"\";\n\n  \/\/ Find the new section + text holder\n  const section = document.getElementById('pured-shaft-section');\n  const textEl = document.getElementById('pured-shaft-text');\n  if (!section || !textEl) return;\n\n  \/\/ Clean it up (handles empty, extra spaces, etc.)\n  const value = (pured || \"\").trim();\n\n  \/\/ Show only for the allowed \"Yes\" values\n  const shouldShow = (value === \"Yes\" || value === \"Yes + Premium Shaft\");\n\n  if (shouldShow) {\n    textEl.textContent =\n      \"This shaft has been pured through computerized analysis to identify its most stable, consistent bending plane, optimizing performance, increasing distance, tightening dispersion, and reducing natural structural irregularities.\";\n    section.style.display = \"\";\n  } else {\n    \/\/ Keep fully hidden so no text and no \u003cbr \/\u003e spacing appears\n    section.style.display = \"none\";\n  }\n})();\n\u003c\/script\u003e\n\n\u003cscript\u003e\n  (function () {\n    function normalizeYouTubeUrl(source) {\n      if (!source) {\n        return source;\n      }\n\n      try {\n        var url = new URL(source, window.location.href);\n        var hostname = url.hostname\n          .toLowerCase()\n          .replace(\/^www\\.\/, \"\");\n        var videoId = \"\";\n\n        if (hostname === \"youtu.be\") {\n          videoId =\n            url.pathname.split(\"\/\").filter(Boolean)[0] || \"\";\n        } else if (\n          hostname === \"youtube.com\" ||\n          hostname === \"m.youtube.com\" ||\n          hostname === \"music.youtube.com\" ||\n          hostname === \"youtube-nocookie.com\"\n        ) {\n          if (url.pathname.indexOf(\"\/embed\/\") === 0) {\n            videoId =\n              url.pathname.replace(\"\/embed\/\", \"\").split(\"\/\")[0];\n          } else if (url.pathname === \"\/watch\") {\n            videoId = url.searchParams.get(\"v\") || \"\";\n          } else if (url.pathname.indexOf(\"\/shorts\/\") === 0) {\n            videoId =\n              url.pathname.replace(\"\/shorts\/\", \"\").split(\"\/\")[0];\n          } else if (url.pathname.indexOf(\"\/live\/\") === 0) {\n            videoId =\n              url.pathname.replace(\"\/live\/\", \"\").split(\"\/\")[0];\n          }\n        }\n\n        if (\n          !videoId ||\n          !\/^[A-Za-z0-9_-]{6,}$\/.test(videoId)\n        ) {\n          return source;\n        }\n\n        var parameters = new URLSearchParams(url.search);\n        parameters.delete(\"v\");\n        parameters.set(\"playsinline\", \"1\");\n\n        var queryString = parameters.toString();\n\n        return (\n          \"https:\/\/www.youtube.com\/embed\/\" +\n          encodeURIComponent(videoId) +\n          (queryString ? \"?\" + queryString : \"\")\n        );\n      } catch (error) {\n        return source;\n      }\n    }\n\n    function prepareVideoBlock(videoBlock) {\n      if (\n        !videoBlock ||\n        videoBlock.getAttribute(\"data-nr-video-ready\") === \"true\"\n      ) {\n        return;\n      }\n\n      var videoFrame = videoBlock.querySelector(\n        \".nr-product-video__frame\"\n      );\n\n      if (!videoFrame) {\n        return;\n      }\n\n      var iframe = videoFrame.querySelector(\"iframe\");\n\n      \/*\n       * Empty copies remain hidden through CSS. Do not remove them,\n       * because the theme can create and populate copies later.\n       *\/\n      if (!iframe) {\n        return;\n      }\n\n      var originalSource = iframe.getAttribute(\"src\") || \"\";\n      var normalizedSource = normalizeYouTubeUrl(originalSource);\n\n      if (\n        normalizedSource \u0026\u0026\n        normalizedSource !== originalSource\n      ) {\n        iframe.setAttribute(\"src\", normalizedSource);\n      }\n\n      iframe.removeAttribute(\"width\");\n      iframe.removeAttribute(\"height\");\n      iframe.removeAttribute(\"frameborder\");\n\n      iframe.setAttribute(\"loading\", \"lazy\");\n      iframe.setAttribute(\"allowfullscreen\", \"\");\n      iframe.setAttribute(\n        \"allow\",\n        \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n      );\n      iframe.setAttribute(\n        \"referrerpolicy\",\n        \"strict-origin-when-cross-origin\"\n      );\n\n      if (\n        !iframe.getAttribute(\"title\") ||\n        iframe.getAttribute(\"title\") === \"YouTube video player\"\n      ) {\n        iframe.setAttribute(\n          \"title\",\n          \"Golf club model overview video\"\n        );\n      }\n\n      videoBlock.setAttribute(\n        \"data-nr-video-ready\",\n        \"true\"\n      );\n      videoBlock.classList.add(\"is-ready\");\n    }\n\n    function initializeProductVideos(root) {\n      if (!root) {\n        return;\n      }\n\n      if (\n        root.nodeType === 1 \u0026\u0026\n        root.matches \u0026\u0026\n        root.matches(\".nr-product-video\")\n      ) {\n        prepareVideoBlock(root);\n      }\n\n      if (!root.querySelectorAll) {\n        return;\n      }\n\n      var videoBlocks = root.querySelectorAll(\n        \".nr-product-video\"\n      );\n\n      Array.prototype.forEach.call(\n        videoBlocks,\n        function (videoBlock) {\n          prepareVideoBlock(videoBlock);\n        }\n      );\n    }\n\n    if (window.nrInitializeProductVideos) {\n      window.nrInitializeProductVideos(document);\n      return;\n    }\n\n    window.nrInitializeProductVideos =\n      initializeProductVideos;\n\n    initializeProductVideos(document);\n\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\n        \"DOMContentLoaded\",\n        function () {\n          initializeProductVideos(document);\n        },\n        { once: true }\n      );\n    }\n\n    \/*\n     * Process description copies created by the theme after the\n     * original Sellbrite description has rendered.\n     *\/\n    var videoObserver = new MutationObserver(\n      function (mutations) {\n        mutations.forEach(function (mutation) {\n          Array.prototype.forEach.call(\n            mutation.addedNodes,\n            function (addedNode) {\n              initializeProductVideos(addedNode);\n            }\n          );\n        });\n      }\n    );\n\n    if (document.documentElement) {\n      videoObserver.observe(document.documentElement, {\n        childList: true,\n        subtree: true\n      });\n    }\n\n    window.setTimeout(function () {\n      initializeProductVideos(document);\n      videoObserver.disconnect();\n    }, 10000);\n  })();\n\u003c\/script\u003e","brand":"Mizuno","offers":[{"title":"Default Title","offer_id":53718736208148,"sku":"S2026-08-25-499208","price":82.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0601\/0165\/6746\/files\/9f63685f-131f-5e0a-9961-8723f29abdc1.jpg?v=1787695561","url":"https:\/\/nextroundgolf.com\/products\/used-mizuno-tp-mills-4-putter-right-handed-35-in-blade","provider":"Next Round","version":"1.0","type":"link"}