{"id":2542,"date":"2022-01-26T05:24:22","date_gmt":"2022-01-26T05:24:22","guid":{"rendered":"https:\/\/www.lewandmassager.com\/pleasure-guide\/?p=2542"},"modified":"2025-11-12T23:53:01","modified_gmt":"2025-11-12T23:53:01","slug":"dry-humping","status":"publish","type":"post","link":"https:\/\/www.lewandmassager.com\/pleasure-guide\/dry-humping\/","title":{"rendered":"Dry Humping: Complete Guide to Grinding, Positions &amp; Techniques"},"content":{"rendered":"\n<style>\n  .blog-art-main ul, \n  .blog-art-main ol {\n    list-style: initial;\n    margin-left: 25px;\n    margin-bottom: 20px;\n  }\n  \n  .blog-art-main li {\n    list-style: initial;\n    margin-bottom: 10px;\n    padding-left: 5px;\n  }\n  \n  .blog-art-main ol {\n    list-style-type: decimal;\n  }\n  \n  .blog-art-main ul {\n    list-style-type: disc;\n  }\n  \n  .blog-art-main table {\n    border-collapse: collapse;\n    width: 100%;\n    margin: 20px 0;\n  }\n  \n  .blog-art-main th, \n  .blog-art-main td {\n    border: 1px solid #ddd;\n    padding: 10px;\n    text-align: left;\n  }\n  \n  .blog-art-main th {\n    background-color: #f9f5ff;\n  }\n\n.blog-art-main .st-text a {display: inline}\n<\/style>\n\n<div style=\"background-color: #f9f5ff; border-radius: 10px; padding: 20px; margin: 20px 0; box-shadow: 0 4px 6px rgba(0,0,0,0.1); max-width: 800px;\">\n  <h2 style=\"color: #ff6160; margin-top: 0; font-size: 20px; border-bottom: 1px solid #d1c4e9; padding-bottom: 10px; margin-bottom: 15px;\">\n    TL;DR Everything You Need to Know About Dry Humping\n  <\/h2>\n  <p style=\"font-size: 16px; line-height: 1.6; margin-bottom: 15px;\">\n    <strong>What it is:<\/strong> Genital stimulation through rubbing\/grinding without penetration (with or without clothes)\n  <\/p>\n  <p style=\"font-size: 16px; line-height: 1.6; margin-bottom: 15px;\">\n    <strong>Major benefits:<\/strong> STI-safe with clothes on, amazing foreplay, accessible for all bodies, can be done solo\n  <\/p>\n  <p style=\"font-size: 16px; line-height: 1.6; margin-bottom: 15px;\">\n    <strong>Best positions:<\/strong> Straddling, missionary, standing against a wall\n  <\/p>\n  <p style=\"font-size: 16px; line-height: 1.6; margin-bottom: 15px;\">\n    <strong>Safety tips:<\/strong> Watch for friction irritation, choose soft fabrics, communicate with partners\n  <\/p>\n  <p style=\"font-size: 16px; line-height: 1.6; margin-bottom: 15px;\">\n    <strong>Pro tip:<\/strong> Add vibrators or lube to enhance the experience and reduce friction\n  <\/p>\n  <p style=\"font-size: 14px; color: #666; margin-top: 15px; border-top: 1px solid #d1c4e9; padding-top: 10px; margin-bottom: 0;\">\n    Read on to explore techniques, variations, and how to make grinding an unforgettable part of your intimate experiences.\n  <\/p>\n<\/div>\n\n\n\n<p>What is dry humping? Can you do it solo? What are the best positions and techniques to dry hump? Sex educator Amanda Chatel reveals it all in our latest pleasure guide!<\/p>\n\n\n\n<p>Dry humping AKA dry sex. Those words probably conjure up memories of your high school days, back when grinding up against your partner, while fully clothed, was something to get all hot and bothered over. But, breaking news, dry humping isn&#8217;t just for horny teenagers in the backseat of a car parked behind the local supermarket. Dry humping is for all of us \u2014 no matter our age or sexual experience. And, in case you haven&#8217;t done it lately, you&#8217;re truly missing out.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is Dry Humping?<\/strong><\/h2>\n\n\n\n<p>Although the phrase is a bit misleading, because if you do it right there&#8217;s nothing &#8220;dry&#8221; about it, dry humping is the sexual act of rubbing your genitals against your partner&#8217;s genitals or other parts of the body.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"939\" src=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-pillow-1024x939.jpg\" alt=\"How to dry hump a pillow\" class=\"wp-image-3369\" srcset=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-pillow-1024x939.jpg 1024w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-pillow-314x288.jpg 314w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-pillow-768x704.jpg 768w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-pillow.jpg 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Also known as outercourse, frottage, or grinding (fancy sounding, isn&#8217;t it?), dry humping can be performed with your clothes on or off. Or, with one partner clothed and the other naked. Heck, you can even dry hump a pillow! The ultimate goal is to get off without penetration \u2014 hence the reason why the word &#8220;dry&#8221; kind of throws the whole concept for a loop. If you rub your clit or penis just the right way, then things are anything but dry.<\/p>\n\n\n\n<style>\n:root {\n  --sd-card-bg: #ffffff;\n  --sd-text: #1a1a1a;\n  --sd-muted: #6b7280;\n  --sd-accent: #AA2BEA;\n  --sd-radius: 12px;\n  --sd-shadow: 0 4px 6px -1px rgb(0 0 0 \/ 0.1), 0 2px 4px -2px rgb(0 0 0 \/ 0.1);\n  --sd-gap: 1rem;\n}\n\n.sdpc-card {\n  background: var(--sd-card-bg);\n  border-radius: var(--sd-radius);\n  box-shadow: var(--sd-shadow);\n  overflow: hidden;\n  display: grid;\n  gap: var(--sd-gap);\n  padding: var(--sd-gap);\n  width: fit-content;\n  color: var(--sd-text);\n  margin-bottom: 1rem;\n}\n\n@media (min-width: 768px) {\n  .sdpc-card {\n    grid-template-columns: 1fr 1.5fr;\n    gap: calc(var(--sd-gap) * 2);\n    padding: calc(var(--sd-gap) * 1.5);\n  }\n}\n\n.sdpc-media {\n  position: relative;\n  max-width: 450px;\n  width: 100%;\n  margin: 0 auto;\n  container-type: inline-size;\n}\n\n@media (min-width: 768px) {\n  .sdpc-media {\n    margin: 0;\n  }\n}\n\n.sdpc-media img {\n  margin: 0 !important;\n}\n  \n.sdpc-media__gallery {\n  position: relative;\n  border-radius: calc(var(--sd-radius) * 0.75);\n  overflow: hidden;\n  background: #f3f4f6;\n  user-select: none;\n  touch-action: pan-y pinch-zoom;\n  isolation: isolate;\n}\n\n.sdpc-media__track {\n  display: flex;\n  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n  will-change: transform;\n}\n\n.sdpc-media__track--dragging {\n  transition: none;\n  cursor: grabbing;\n}\n\n.sdpc-media__slide {\n  min-width: 100%;\n  position: relative;\n}\n\n.sdpc-media__image {\n  width: 100%;\n  height: auto;\n  aspect-ratio: 1 \/ 1;\n  object-fit: cover;\n  display: block;\n  pointer-events: none;\n}\n\n.sdpc-media__nav {\n  position: absolute;\n  top: 50%;\n  transform: translateY(-50%);\n  width: calc(100% - 1rem);\n  left: 0.5rem;\n  right: 0.5rem;\n  display: flex;\n  justify-content: space-between;\n  pointer-events: none;\n  z-index: 2;\n}\n\n.sdpc-media__button {\n  width: 2rem;\n  height: 2rem;\n  border-radius: 50%;\n  background: rgba(255, 255, 255, 0.9);\n  backdrop-filter: blur(4px);\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  cursor: pointer;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  pointer-events: auto;\n  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);\n  opacity: 0;\n}\n\n.sdpc-media:hover .sdpc-media__button:not(:disabled) {\n  opacity: 1;\n}\n\n.sdpc-media__button:hover:not(:disabled) {\n  background: rgba(255, 255, 255, 0.98);\n  transform: scale(1.1);\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n  border-color: rgba(0, 0, 0, 0.15);\n}\n\n.sdpc-media__button:active:not(:disabled) {\n  transform: scale(0.95);\n}\n\n.sdpc-media__button:disabled {\n  cursor: not-allowed;\n  opacity: 0 !important;\n}\n\n.sdpc-media__button:focus-visible {\n  outline: 2px solid var(--sd-accent);\n  outline-offset: 2px;\n  opacity: 1;\n}\n\n.sdpc-media__button svg {\n  width: 20px;\n  height: 20px;\n  stroke: #374151;\n  stroke-width: 2;\n  fill: none;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n}\n\n.sdpc-media__dots {\n  display: flex;\n  gap: 0.5rem;\n  margin-top: 0.75rem;\n  justify-content: center;\n  align-items: center;\n  height: 1.5rem;\n}\n\n.sdpc-media__dot {\n  width: 0.5rem;\n  height: 0.5rem;\n  border-radius: 50%;\n  background: #d1d5db;\n  border: none;\n  cursor: pointer;\n  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n  padding: 0;\n  position: relative;\n}\n\n.sdpc-media__dot::after {\n  content: '';\n  position: absolute;\n  inset: -6px;\n}\n\n.sdpc-media__dot:hover {\n  background: #9ca3af;\n  transform: scale(1.2);\n}\n\n.sdpc-media__dot--active {\n  background: var(--sd-accent);\n  width: 1.5rem;\n  border-radius: 0.25rem;\n}\n\n.sdpc-media__dot:focus-visible {\n  outline: 2px solid var(--sd-accent);\n  outline-offset: 3px;\n}\n\n.sdpc-media__thumbs {\n  display: flex;\n  gap: 0.5rem;\n  margin-top: 0.75rem;\n  justify-content: center;\n  overflow-x: auto;\n  padding: 0.25rem 0;\n  scrollbar-width: none;\n}\n\n.sdpc-media__thumbs::-webkit-scrollbar {\n  display: none;\n}\n\n.sdpc-media__thumb {\n  min-width: 3.5rem;\n  width: 3.5rem;\n  height: 3.5rem;\n  border-radius: 8px;\n  overflow: hidden;\n  cursor: pointer;\n  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n  border: 2px solid transparent;\n  background: #f3f4f6;\n}\n\n.sdpc-media__thumb:hover {\n  transform: scale(1.05);\n  border-color: #d1d5db;\n}\n\n.sdpc-media__thumb--active {\n  border-color: var(--sd-accent);\n  box-shadow: 0 0 0 1px var(--sd-accent);\n}\n\n.sdpc-media__thumb:focus-visible {\n  outline: 2px solid var(--sd-accent);\n  outline-offset: 2px;\n}\n\n.sdpc-media__thumb img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n}\n\n.sdpc-content {\n  display: flex;\n  flex-direction: column;\n  gap: calc(var(--sd-gap) * 0.875);\n  padding: 0.5rem 0;\n}\n\n.sdpc-content__header {\n  display: flex;\n  flex-direction: column;\n  gap: 0.625rem;\n}\n\n.sdpc-content__badges {\n  display: flex;\n  gap: 0.5rem;\n  flex-wrap: wrap;\n}\n\n.sdpc-content__badge {\n  display: inline-block;\n  padding: 0.25rem 0.625rem;\n  background: var(--sd-accent);\n  color: white;\n  border-radius: 6px;\n  font-size: 0.75rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.03em;\n  line-height: 1;\n}\n\n.sdpc-content__badge--savings {\n  background: #ff6160;\n}\n\n.sdpc-content__title {\n  font-size: 1.375rem;\n  font-weight: 700;\n  line-height: 1.3;\n  margin: 0;\n}\n\n.sdpc-content__description {\n  color: var(--sd-muted);\n  line-height: 1.6;\n  margin: 0;\n  display: -webkit-box;\n  -webkit-line-clamp: 2;\n  -webkit-box-orient: vertical;\n  overflow: hidden;\n  font-size: 0.9375rem;\n}\n\n.sdpc-content__rating {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  font-size: 0.875rem;\n  color: var(--sd-muted);\n}\n\n.sdpc-content__stars {\n  display: flex;\n  gap: 0.125rem;\n}\n\n.sdpc-content__star {\n  width: 1rem;\n  height: 1rem;\n  fill: #fbbf24;\n  stroke: #fbbf24;\n}\n\n.sdpc-content__star--empty {\n  fill: transparent;\n  stroke: #d1d5db;\n}\n\n.sdpc-content__pricing {\n  display: flex;\n  align-items: baseline;\n  gap: 0.75rem;\n  margin-top: auto;\n}\n\n.sdpc-content__price {\n  font-size: 1.625rem;\n  font-weight: 700;\n  color: var(--sd-text);\n}\n\n.sdpc-content__compare {\n  font-size: 1.125rem;\n  color: var(--sd-muted);\n  text-decoration: line-through;\n}\n\n.sdpc-content__discount {\n  background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);\n  border: 2px dashed var(--sd-accent);\n  border-radius: 10px;\n  padding: 0.875rem 1rem;\n  cursor: pointer;\n  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n  user-select: none;\n  position: relative;\n}\n\n.sdpc-content__discount:hover {\n  background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%);\n  border-color: #1d4ed8;\n  transform: translateY(-1px);\n  box-shadow: 0 4px 12px rgba(170, 43, 234, 0.15);\n}\n\n.sdpc-content__discount:active {\n  transform: translateY(0);\n}\n\n.sdpc-content__discount:focus-visible {\n  outline: 2px solid var(--sd-accent);\n  outline-offset: 2px;\n}\n\n.sdpc-content__discount-label {\n  font-size: 0.75rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.05em;\n  color: var(--sd-accent);\n  margin-bottom: 0.375rem;\n  display: block;\n}\n\n.sdpc-content__discount-message {\n  font-size: 0.8125rem;\n  color: var(--sd-muted);\n  margin-bottom: 0.5rem;\n  display: block;\n  line-height: 1.4;\n}\n\n.sdpc-content__discount-code {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 0.75rem;\n}\n\n.sdpc-content__discount-text {\n  font-size: 1.125rem;\n  font-weight: 700;\n  color: var(--sd-text);\n  letter-spacing: 0.05em;\n  font-family: 'Courier New', monospace;\n}\n\n.sdpc-content__discount-icon {\n  width: 1.25rem;\n  height: 1.25rem;\n  stroke: var(--sd-accent);\n  stroke-width: 2;\n  fill: none;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n  flex-shrink: 0;\n  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.sdpc-content__discount:hover .sdpc-content__discount-icon {\n  transform: scale(1.1);\n}\n\n.sdpc-content__discount-hint {\n  font-size: 0.8125rem;\n  color: var(--sd-muted);\n  margin-top: 0.375rem;\n  display: block;\n}\n\n.sdpc-content__discount--copied {\n  background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);\n  border-color: #16a34a;\n}\n\n.sdpc-content__discount--copied .sdpc-content__discount-label {\n  color: #16a34a;\n}\n\n.sdpc-content__discount--copied .sdpc-content__discount-icon {\n  stroke: #16a34a;\n}\n\n.sdpc-content__discount-feedback {\n  position: absolute;\n  top: -2.5rem;\n  left: 50%;\n  transform: translateX(-50%);\n  background: #16a34a;\n  color: white;\n  padding: 0.5rem 1rem;\n  border-radius: 6px;\n  font-size: 0.875rem;\n  font-weight: 600;\n  white-space: nowrap;\n  opacity: 0;\n  pointer-events: none;\n  transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n  z-index: 10;\n}\n\n.sdpc-content__discount-feedback::after {\n  content: '';\n  position: absolute;\n  bottom: -4px;\n  left: 50%;\n  transform: translateX(-50%);\n  width: 0;\n  height: 0;\n  border-left: 5px solid transparent;\n  border-right: 5px solid transparent;\n  border-top: 5px solid #16a34a;\n}\n\n.sdpc-content__discount-feedback--visible {\n  opacity: 1;\n}\n\n.sdpc-content__cta {\n  margin-top: auto;\n  padding-top: 0.5rem;\n}\n\n.sdpc-button {\n  width: 100%;\n  padding: 0.5rem;\n  background: var(--sd-accent);\n  color: white !important;\n  border: none;\n  border-radius: 50px;\n  font-size: 1rem;\n  font-weight: 600;\n  cursor: pointer;\n  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n  text-align: center;\n  text-decoration: none;\n  display: inline-block;\n}\n\n@media (min-width: 768px) {\n  .sdpc-button {\n    width: auto;\n    min-width: 160px;\n  }\n}\n\n.sdpc-button:hover {\n  background: #1d4ed8;\n  transform: translateY(-1px);\n  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.2);\n}\n\n.sdpc-button:active {\n  transform: translateY(0);\n}\n\n.sdpc-button:focus-visible {\n  outline: 2px solid var(--sd-accent);\n  outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .sdpc-media__track,\n  .sdpc-media__button,\n  .sdpc-media__dot,\n  .sdpc-media__thumb,\n  .sdpc-button,\n  .sdpc-content__discount {\n    transition: none;\n  }\n}\n\n.sdpc-sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n<\/style>\n\n<div class=\"sdpc-card\">\n  <script type=\"application\/json\" class=\"sdpc-data\">\n    {\n      \"title\": \"Le Wand Rechargeable Vibrating Massager\",\n      \"description\": \"Compact wand with powerful vibrations and flexible head for all-over body massage.\",\n      \"url\": \"https:\/\/www.lewandmassager.com\/le-wand-rechargeable-vibrating-massager.html\",\n      \"images\": [\n        \"https:\/\/www.lewandmassager.com\/media\/catalog\/product\/cache-webp\/12c7fc2d1ade4ecde11c635020708fe1\/l\/e\/le-wand-pearl-white-rechargeable-vibrating-massager-00_4.webp\",\n        \"https:\/\/www.lewandmassager.com\/media\/catalog\/product\/cache-webp\/12c7fc2d1ade4ecde11c635020708fe1\/l\/e\/le-wand-gray-rechargeable-vibrating-massager-01.webp\",\n        \"https:\/\/www.lewandmassager.com\/media\/catalog\/product\/cache-webp\/12c7fc2d1ade4ecde11c635020708fe1\/l\/e\/le-wand-gray-rechargeable-vibrating-massager-02.webp\"\n      ],\n      \"price\": 125.99,\n      \"compareAtPrice\": 179.99,\n      \"currency\": \"USD\",\n      \"badge\": \"Bestseller\",\n      \"rating\": 4.89,\n      \"reviewCount\": 62,\n      \"showReaderDiscount\": false,\n      \"discountCode\": \"\",\n      \"discountPercent\": 0,\n      \"trackingSource\": \"blog_product_card\"\n    }\n  <\/script>\n  <div class=\"sdpc-media\">\n    <div class=\"sdpc-media__gallery\" role=\"region\" aria-label=\"Product images\">\n      <div class=\"sdpc-media__track\">\n        <div class=\"sdpc-media__slide\">\n          <img class=\"sdpc-media__image\" src=\"\" loading=\"eager\" decoding=\"async\">\n        <\/div>\n      <\/div>\n      <div class=\"sdpc-media__nav\" aria-hidden=\"true\"><\/div>\n    <\/div>\n    <div class=\"sdpc-media__dots\" role=\"tablist\"><\/div>\n  <\/div>\n  <div class=\"sdpc-content\">\n    <div class=\"sdpc-content__header\">\n      <div class=\"sdpc-content__badges\"><\/div>\n      <h2 class=\"sdpc-content__title\"><\/h2>\n      <p class=\"sdpc-content__description\"><\/p>\n      <div class=\"sdpc-content__rating\"><\/div>\n    <\/div>\n    <div class=\"sdpc-content__pricing\"><\/div>\n    <div class=\"sdpc-content__discount-container\"><\/div>\n    <div class=\"sdpc-content__cta\">\n      <a href=\"#\" class=\"sdpc-button\">View product<\/a>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n  'use strict';\n  \n  function formatPrice(price, currency) {\n    const symbol = currency === 'GBP' ? '\u00a3' : '$';\n    return symbol + price.toFixed(2);\n  }\n  \n  function createStar(filled) {\n    return `<svg class=\"sdpc-content__star ${filled ? '' : 'sdpc-content__star--empty'}\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n      <path d=\"M10 1l2.5 6.5H19l-5.25 4.5L16.25 19 10 14.5 3.75 19l2.5-6.5L1 8h6.5L10 1z\"\/>\n    <\/svg>`;\n  }\n  \n  function copyToClipboard(text) {\n    if (navigator.clipboard && navigator.clipboard.writeText) {\n      return navigator.clipboard.writeText(text);\n    } else {\n      \/\/ Fallback for older browsers\n      const textArea = document.createElement('textarea');\n      textArea.value = text;\n      textArea.style.position = 'fixed';\n      textArea.style.left = '-999999px';\n      textArea.style.top = '-999999px';\n      document.body.appendChild(textArea);\n      textArea.focus();\n      textArea.select();\n      return new Promise((resolve, reject) => {\n        const successful = document.execCommand('copy');\n        document.body.removeChild(textArea);\n        if (successful) {\n          resolve();\n        } else {\n          reject();\n        }\n      });\n    }\n  }\n  \n  function addSourceTracking(baseUrl, source) {\n    \/\/ Default to 'blog' if no source specified\n    const trackingSource = source || 'blog';\n    \n    try {\n      const url = new URL(baseUrl);\n      url.searchParams.set('source', trackingSource);\n      return url.toString();\n    } catch (e) {\n      \/\/ Fallback for relative URLs or if URL parsing fails\n      const separator = baseUrl.includes('?') ? '&' : '?';\n      return `${baseUrl}${separator}source=${encodeURIComponent(trackingSource)}`;\n    }\n  }\n  \n  function initCard(card) {\n    const dataEl = card.querySelector('.sdpc-data');\n    if (!dataEl) return;\n    \n    const data = JSON.parse(dataEl.textContent);\n    let currentIndex = 0;\n    let isDragging = false;\n    let startX = 0;\n    let currentX = 0;\n    let dragOffset = 0;\n    \n    const gallery = card.querySelector('.sdpc-media__gallery');\n    const track = gallery.querySelector('.sdpc-media__track');\n    const nav = gallery.querySelector('.sdpc-media__nav');\n    const dotsContainer = card.querySelector('.sdpc-media__dots');\n    const badgesContainer = card.querySelector('.sdpc-content__badges');\n    const titleEl = card.querySelector('.sdpc-content__title');\n    const descEl = card.querySelector('.sdpc-content__description');\n    const ratingContainer = card.querySelector('.sdpc-content__rating');\n    const pricingContainer = card.querySelector('.sdpc-content__pricing');\n    const discountContainer = card.querySelector('.sdpc-content__discount-container');\n    const ctaLink = card.querySelector('.sdpc-button');\n    \n    \/\/ Set initial data\n    titleEl.textContent = data.title;\n    descEl.textContent = data.description;\n    \n    \/\/ Add source tracking to URL (defaults to 'blog' if not specified)\n    const trackedUrl = addSourceTracking(data.url, data.trackingSource);\n    ctaLink.href = trackedUrl;\n    \n    \/\/ Add data attributes for GA4 event tracking\n    ctaLink.setAttribute('data-product', data.title.replace(\/\\s+\/g, '_').toLowerCase());\n    ctaLink.setAttribute('data-source', data.trackingSource || 'blog');\n    if (data.discountCode) ctaLink.setAttribute('data-discount', data.discountCode);\n    \n    \/\/ Badges\n    if (data.badge) {\n      const badge = document.createElement('span');\n      badge.className = 'sdpc-content__badge';\n      badge.textContent = data.badge;\n      badgesContainer.appendChild(badge);\n    }\n    \n    \/\/ Pricing\n    const priceEl = document.createElement('span');\n    priceEl.className = 'sdpc-content__price';\n    priceEl.textContent = formatPrice(data.price, data.currency);\n    pricingContainer.appendChild(priceEl);\n    \n    if (data.compareAtPrice && data.compareAtPrice > data.price) {\n      const compareEl = document.createElement('span');\n      compareEl.className = 'sdpc-content__compare';\n      compareEl.textContent = formatPrice(data.compareAtPrice, data.currency);\n      pricingContainer.appendChild(compareEl);\n      \n      const savings = Math.round((1 - data.price \/ data.compareAtPrice) * 100);\n      const savingsBadge = document.createElement('span');\n      savingsBadge.className = 'sdpc-content__badge sdpc-content__badge--savings';\n      savingsBadge.textContent = `Save ${savings}%`;\n      badgesContainer.appendChild(savingsBadge);\n    }\n    \n    \/\/ Discount Code - Now with enhanced control\n    \/\/ Check if discount should be shown and code exists\n    const showDiscount = data.showReaderDiscount !== false; \/\/ Default to true if not specified\n    const hasValidCode = data.discountCode && data.discountCode.trim() !== '';\n    \n    if (showDiscount && hasValidCode) {\n      const discountBox = document.createElement('div');\n      discountBox.className = 'sdpc-content__discount';\n      discountBox.setAttribute('role', 'button');\n      discountBox.setAttribute('tabindex', '0');\n      discountBox.setAttribute('aria-label', `Copy discount code ${data.discountCode} to clipboard`);\n      \n      const feedback = document.createElement('div');\n      feedback.className = 'sdpc-content__discount-feedback';\n      feedback.textContent = 'Copied!';\n      feedback.setAttribute('aria-live', 'polite');\n      feedback.setAttribute('aria-atomic', 'true');\n      \n      \/\/ Use custom label if provided, otherwise default\n      const discountLabel = data.discountLabel || 'Exclusive Reader Offer';\n      \n      \/\/ Use custom message if provided, otherwise generate based on percentage\n      let discountMessage = data.discountMessage;\n      if (!discountMessage) {\n        discountMessage = data.discountPercent \n          ? `Save an extra ${data.discountPercent}% with our exclusive reader discount` \n          : 'Enjoy our exclusive reader discount';\n      }\n      \n      discountBox.innerHTML = `\n        <span class=\"sdpc-content__discount-label\">${discountLabel}<\/span>\n        <span class=\"sdpc-content__discount-message\">${discountMessage}<\/span>\n        <div class=\"sdpc-content__discount-code\">\n          <span class=\"sdpc-content__discount-text\">${data.discountCode}<\/span>\n          <svg class=\"sdpc-content__discount-icon\" viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"><\/rect>\n            <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"><\/path>\n          <\/svg>\n        <\/div>\n        <span class=\"sdpc-content__discount-hint\">Click to copy code<\/span>\n      `;\n      \n      discountBox.appendChild(feedback);\n      \n      function handleCopy() {\n        copyToClipboard(data.discountCode).then(() => {\n          discountBox.classList.add('sdpc-content__discount--copied');\n          feedback.classList.add('sdpc-content__discount-feedback--visible');\n          \n          \/\/ Announce to screen readers\n          const announcement = document.createElement('div');\n          announcement.className = 'sdpc-sr-only';\n          announcement.setAttribute('role', 'status');\n          announcement.setAttribute('aria-live', 'polite');\n          announcement.textContent = `Discount code ${data.discountCode} copied to clipboard`;\n          discountBox.appendChild(announcement);\n          \n          setTimeout(() => {\n            discountBox.classList.remove('sdpc-content__discount--copied');\n            feedback.classList.remove('sdpc-content__discount-feedback--visible');\n            announcement.remove();\n          }, 2000);\n        }).catch(() => {\n          \/\/ Handle error silently or show error message\n          console.error('Failed to copy discount code');\n        });\n      }\n      \n      discountBox.addEventListener('click', handleCopy);\n      discountBox.addEventListener('keydown', (e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          handleCopy();\n        }\n      });\n      \n      discountContainer.appendChild(discountBox);\n    }\n    \n    \/\/ Rating\n    if (data.rating && data.reviewCount) {\n      const stars = document.createElement('div');\n      stars.className = 'sdpc-content__stars';\n      const fullStars = Math.floor(data.rating);\n      const hasHalf = data.rating % 1 >= 0.5;\n      \n      for (let i = 0; i < 5; i++) {\n        stars.innerHTML += createStar(i < fullStars || (i === fullStars &#038;&#038; hasHalf));\n      }\n      \n      const text = document.createElement('span');\n      text.textContent = `${data.rating} (${data.reviewCount} reviews)`;\n      \n      const srText = document.createElement('span');\n      srText.className = 'sdpc-sr-only';\n      srText.textContent = `Rated ${data.rating} out of 5 from ${data.reviewCount} reviews`;\n      \n      ratingContainer.appendChild(stars);\n      ratingContainer.appendChild(text);\n      ratingContainer.appendChild(srText);\n    }\n    \n    \/\/ Gallery functionality - handle both single and multiple images\n    if (data.images &#038;&#038; data.images.length > 0) {\n      \/\/ Build image slides\n      track.innerHTML = '';\n      data.images.forEach((img, i) => {\n        const slide = document.createElement('div');\n        slide.className = 'sdpc-media__slide';\n        \n        const image = document.createElement('img');\n        image.className = 'sdpc-media__image';\n        image.src = img;\n        image.alt = `${data.title} - Image ${i + 1}`;\n        image.loading = i === 0 ? 'eager' : 'lazy';\n        image.decoding = 'async';\n        \n        slide.appendChild(image);\n        track.appendChild(slide);\n      });\n      \n      \/\/ Only add navigation controls if there are multiple images\n      if (data.images.length > 1) {\n        \/\/ Create navigation buttons\n        const prevBtn = document.createElement('button');\n        prevBtn.className = 'sdpc-media__button sdpc-media__button--prev';\n        prevBtn.setAttribute('aria-label', 'Previous image');\n        prevBtn.type = 'button';\n        prevBtn.innerHTML = '<svg viewBox=\"0 0 24 24\"><path d=\"M15 18l-6-6 6-6\" \/><\/svg>';\n        \n        const nextBtn = document.createElement('button');\n        nextBtn.className = 'sdpc-media__button sdpc-media__button--next';\n        nextBtn.setAttribute('aria-label', 'Next image');\n        nextBtn.type = 'button';\n        nextBtn.innerHTML = '<svg viewBox=\"0 0 24 24\"><path d=\"M9 6l6 6-6 6\" \/><\/svg>';\n        \n        nav.appendChild(prevBtn);\n        nav.appendChild(nextBtn);\n        nav.removeAttribute('aria-hidden');\n        \n        \/\/ Create dots or thumbnails\n        let dots = [];\n        if (data.images.length <= 5) {\n          \/\/ Use dots for 5 or fewer images\n          data.images.forEach((_, i) => {\n            const dot = document.createElement('button');\n            dot.className = 'sdpc-media__dot';\n            dot.type = 'button';\n            dot.setAttribute('aria-label', `Go to image ${i + 1}`);\n            dot.setAttribute('role', 'tab');\n            if (i === 0) dot.classList.add('sdpc-media__dot--active');\n            dotsContainer.appendChild(dot);\n            dots.push(dot);\n          });\n        } else {\n          \/\/ Use thumbnails for more than 5 images\n          dotsContainer.className = 'sdpc-media__thumbs';\n          data.images.forEach((img, i) => {\n            const thumb = document.createElement('button');\n            thumb.className = 'sdpc-media__thumb';\n            thumb.type = 'button';\n            thumb.setAttribute('aria-label', `Go to image ${i + 1}`);\n            if (i === 0) thumb.classList.add('sdpc-media__thumb--active');\n            \n            const thumbImg = document.createElement('img');\n            thumbImg.src = img;\n            thumbImg.alt = '';\n            thumbImg.loading = 'lazy';\n            thumbImg.decoding = 'async';\n            \n            thumb.appendChild(thumbImg);\n            dotsContainer.appendChild(thumb);\n            dots.push(thumb);\n          });\n        }\n        \n        function updateGallery(index, animate = true) {\n          currentIndex = Math.max(0, Math.min(index, data.images.length - 1));\n          \n          if (!animate) {\n            track.style.transition = 'none';\n          }\n          track.style.transform = `translateX(-${currentIndex * 100}%)`;\n          if (!animate) {\n            track.offsetHeight; \/\/ Force reflow\n            track.style.transition = '';\n          }\n          \n          dots.forEach((d, i) => {\n            const isActive = i === currentIndex;\n            d.classList.toggle(d.classList.contains('sdpc-media__dot') ? 'sdpc-media__dot--active' : 'sdpc-media__thumb--active', isActive);\n            d.setAttribute('aria-selected', isActive);\n          });\n          \n          prevBtn.disabled = currentIndex === 0;\n          nextBtn.disabled = currentIndex === data.images.length - 1;\n          \n          \/\/ Announce change for screen readers\n          const announcement = document.createElement('div');\n          announcement.setAttribute('role', 'status');\n          announcement.setAttribute('aria-live', 'polite');\n          announcement.className = 'sdpc-sr-only';\n          announcement.textContent = `Image ${currentIndex + 1} of ${data.images.length}`;\n          gallery.appendChild(announcement);\n          setTimeout(() => announcement.remove(), 100);\n        }\n        \n        \/\/ Button events\n        prevBtn.addEventListener('click', () => {\n          if (currentIndex > 0) updateGallery(currentIndex - 1);\n        });\n        \n        nextBtn.addEventListener('click', () => {\n          if (currentIndex < data.images.length - 1) updateGallery(currentIndex + 1);\n        });\n        \n        \/\/ Dot\/thumbnail events\n        dots.forEach((dot, i) => {\n          dot.addEventListener('click', () => updateGallery(i));\n        });\n        \n        \/\/ Keyboard navigation\n        gallery.addEventListener('keydown', (e) => {\n          if (e.key === 'ArrowLeft' && currentIndex > 0) {\n            updateGallery(currentIndex - 1);\n          } else if (e.key === 'ArrowRight' && currentIndex < data.images.length - 1) {\n            updateGallery(currentIndex + 1);\n          }\n        });\n        \n        \/\/ Touch\/mouse drag support\n        function handleStart(e) {\n          isDragging = true;\n          startX = e.type.includes('mouse') ? e.clientX : e.touches[0].clientX;\n          dragOffset = 0;\n          track.classList.add('sdpc-media__track--dragging');\n          gallery.style.cursor = 'grabbing';\n          e.preventDefault();\n        }\n        \n        function handleMove(e) {\n          if (!isDragging) return;\n          e.preventDefault();\n          \n          currentX = e.type.includes('mouse') ? e.clientX : e.touches[0].clientX;\n          dragOffset = currentX - startX;\n          \n          const maxOffset = gallery.offsetWidth * 0.33;\n          dragOffset = Math.max(-maxOffset, Math.min(maxOffset, dragOffset));\n          \n          const baseOffset = -currentIndex * 100;\n          const dragPercent = (dragOffset \/ gallery.offsetWidth) * 100;\n          track.style.transform = `translateX(calc(${baseOffset}% + ${dragPercent}%))`;\n        }\n        \n        function handleEnd() {\n          if (!isDragging) return;\n          isDragging = false;\n          track.classList.remove('sdpc-media__track--dragging');\n          gallery.style.cursor = '';\n          \n          const threshold = gallery.offsetWidth * 0.15;\n          \n          if (dragOffset < -threshold &#038;&#038; currentIndex < data.images.length - 1) {\n            updateGallery(currentIndex + 1);\n          } else if (dragOffset > threshold && currentIndex > 0) {\n            updateGallery(currentIndex - 1);\n          } else {\n            updateGallery(currentIndex);\n          }\n          \n          dragOffset = 0;\n        }\n        \n        \/\/ Mouse events\n        gallery.addEventListener('mousedown', handleStart);\n        window.addEventListener('mousemove', handleMove);\n        window.addEventListener('mouseup', handleEnd);\n        \n        \/\/ Touch events\n        gallery.addEventListener('touchstart', handleStart, { passive: false });\n        gallery.addEventListener('touchmove', handleMove, { passive: false });\n        gallery.addEventListener('touchend', handleEnd);\n        \n        \/\/ Prevent drag on images\n        track.addEventListener('dragstart', (e) => e.preventDefault());\n        \n        \/\/ Initialize\n        updateGallery(0, false);\n        \n        \/\/ Auto-scroll thumbnails container if needed\n        if (dotsContainer.classList.contains('sdpc-media__thumbs')) {\n          dots[0].scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' });\n        }\n      }\n    } else if (!data.images || data.images.length === 0) {\n      \/\/ Handle case where no images are provided\n      const slide = track.querySelector('.sdpc-media__slide');\n      const image = slide.querySelector('.sdpc-media__image');\n      image.alt = `${data.title} - No image available`;\n    }\n  }\n  \n  \/\/ Initialize all cards\n  document.querySelectorAll('.sdpc-card').forEach(initCard);\n})();\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Benefits of Dry Humping<\/strong><\/h2>\n\n\n\n<p>What&#8217;s great about dry humping is that it&#8217;s not just fun, but there are benefits to it too.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Dry humping feels good.<\/strong><\/h3>\n\n\n\n<p>When our genitals are stimulated, blood rushes towards them to engorge them, which leads to arousal. The more aroused you are, the more you&#8217;re likely to bump and grind against each other. Even if neither of you climaxes, just the stimulation of all that rubbing alone can feel really fantastic.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. You don&#8217;t have to worry about STIs.<\/strong><\/h3>\n\n\n\n<p>Well, this has a bit of a caveat. If you&#8217;re dry humping with clothes on, which can be quite satisfying for both partners and orgasms can be reached, you don&#8217;t have to concern yourself with the possibility of getting STIs, or pregnant for that matter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. You can learn about your body.<\/strong><\/h3>\n\n\n\n<p>Whether it&#8217;s your first-time solo dry humping or you&#8217;re a seasoned pro, there&#8217;s always room to learn more about your body. For example, although the exterior part of the clitoris is basically just a sneak peek at the whole enchilada, so to speak, people with clits have reported that one side of their clitoris is more sensitive than the other side. In other words, your clit can be a lefty or righty.<\/p>\n\n\n\n<p>With some proper, intense dry humping, you might just catch the right part of your partner&#8217;s pants that hits that sweet spot and takes you to a new level of pleasure. The same thing goes with penis owners. Sensitive areas vary from penis to penis, and dry humping just might lead you to a new spot you didn&#8217;t even realize could achieve such pleasure.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. You can do dry humping alone.<\/strong><\/h3>\n\n\n\n<p>Any sexual act that you can do solo and score an orgasm out of is something worth noting. Frankly, anything is hump-able if you really try.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. It makes for great foreplay.<\/strong><\/h3>\n\n\n\n<p>In a world where it takes vulva owners at least, emphasis on <em>at least<\/em> 20 minutes to become fully aroused, dry humping is perfect for extended foreplay. The more aroused each partner is, the better the following sex acts will be. And, no, those sex acts don&#8217;t strictly have to be intercourse. A hot dry humping session before oral sex is the type of thing that will blow both partners&#8217; minds. You might even want to explore <a href=\"https:\/\/www.lewandmassager.com\/pleasure-guide\/edging\/\">edging techniques<\/a> to build up that delicious tension even more.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Risks of Dry Humping<\/strong><\/h2>\n\n\n\n<p>As is the case with all good things, there are always risk factors. That&#8217;s just how the Universe works: You can&#8217;t have the good without some potentially &#8220;bad&#8221; stuff weaved in there. But, at the end of the day, it&#8217;s a fair trade when you think about it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Friction injuries.<\/strong><\/h3>\n\n\n\n<p>Whether you choose to dry hump with your clothes on or even in just your undies, you run the risk of irritating the genital tissue. While you may not feel it at the time, as you&#8217;re totally engaged in your hot and heavy hump fest, afterward or even the next day you may feel some aching and even have some minimal friction burns \u2014 especially if you&#8217;re a penis owner whose penis is circumcised. The foreskin provides protection in many cases, and this happens to be one of them.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"939\" src=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/risks-of-dry-humping-1024x939.jpg\" alt=\"Friction injuries and STIs associated with dry humping\" class=\"wp-image-3370\" srcset=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/risks-of-dry-humping-1024x939.jpg 1024w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/risks-of-dry-humping-314x288.jpg 314w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/risks-of-dry-humping-768x704.jpg 768w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/risks-of-dry-humping.jpg 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. STIs can be a concern.<\/strong><\/h3>\n\n\n\n<p>While there&#8217;s no way an STI is breaking through two pairs of denim-clad partners, if you do strip down to your skivvies or decide to practice outercourse sans those skivvies (meaning naked), STIs then become something to worry about.<\/p>\n\n\n\n<p>You don&#8217;t need to have penetrative sex to contract an STI from an infected partner or vice versa. STIs like herpes, HPV, trichomoniasis, syphilis (if there&#8217;s an exposed sore), and crabs don&#8217;t necessarily need to involve the exchange of bodily fluid to be transmitted; skin-to-skin contact is enough. So, before you strip down to naked dry humping, you may want to know each other&#8217;s STI statuses.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Communication: How to Introduce Dry Humping to Your Partner<\/strong><\/h2>\n\n\n\n<p>Not sure how to bring up grinding with a partner? Here&#8217;s your roadmap to making it fun and consensual:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Starting the Conversation<\/strong><\/h3>\n\n\n\n<p>Sometimes the best approach is the direct one. Try something like: &#8220;I love the idea of taking things slow and building up tension. Want to make out and grind like teenagers?&#8221; The playful approach often works wonders and takes any pressure off.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Check-Ins During Play<\/strong><\/h3>\n\n\n\n<p>Keep communication flowing with simple check-ins:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8220;Does this feel good?&#8221;<\/li>\n\n\n\n<li>&#8220;Want me to go harder\/softer?&#8221;<\/li>\n\n\n\n<li>&#8220;Should we add some lube to make this smoother?&#8221;<\/li>\n\n\n\n<li>&#8220;Want to try a different position?&#8221;<\/li>\n<\/ul>\n\n\n\n<p>Remember, consent and communication make everything hotter. When both partners feel heard and respected, the pleasure intensifies naturally.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to Dry Hump Solo<\/strong><\/h2>\n\n\n\n<p>Since one of the major benefits of dry humping is that you don&#8217;t need a partner, not covering ways in which you can get the most out of your solo dry humping experience would be a serious disservice to you, dear reader!<\/p>\n\n\n\n<p>Although we&#8217;re only going to cover a handful of dry humping techniques, it&#8217;s important to keep in mind that, as mentioned above, if it&#8217;s hump-able, then it works. Of course, since this is a sexual act, you want to keep your humping at home.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Hands!<\/strong><\/h3>\n\n\n\n<p>Your hands are magical, wonderful things that, if you&#8217;ve masturbated enough, they know exactly how to please your genitals. While in the past you may have stuck to the conventional methods of masturbating with your hands, like <a href=\"https:\/\/www.lewandmassager.com\/pleasure-guide\/clit-stimulation\/\">stimulating the clit<\/a> or penis, you can actually use your hands when dry humping solo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"939\" src=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-sex-stories-1024x939.jpg\" alt=\"Does dry humping count as sex\" class=\"wp-image-3371\" srcset=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-sex-stories-1024x939.jpg 1024w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-sex-stories-314x288.jpg 314w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-sex-stories-768x704.jpg 768w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-sex-stories.jpg 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>With your hand flat and palm up, you can grind your genitals against the surface of your palm. You can do this by laying on your back, on your stomach, or even standing. What&#8217;s so satisfying is that your palm covers a wider range of your genitals and the deeper you move your hips into your hand, the more intense the experience.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Furniture and other household items.<\/strong><\/h3>\n\n\n\n<p>Take a look around your home. Is there anything that couldn&#8217;t be used to get off? From pillows to chairs and couch arms, to the rounded end of a staircase banister, the washing machine while it&#8217;s on spin cycle, and so on down the line, when it comes to using furniture and other household items to dry hump, you practically have an endless supply of goods. Nothing beats straddling the arm of a chair and bringing yourself to orgasm.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Lay-on sex toys.<\/strong><\/h3>\n\n\n\n<p>If you want some buzz with your dry humping, then you definitely want to add some toys to the mix \u2014 lay-on sex toys from our<a href=\"https:\/\/www.lewandmassager.com\/sex-toys\/mini-vibrators\/\"> mini vibrators collection<\/a>, specifically the <a href=\"https:\/\/www.lewandmassager.com\/mini-vibes\/le-wand-point.html\">Le Wand Point<\/a>, are perfect for this and can be used in so many different dry humping techniques.<a href=\"https:\/\/www.lewandmassager.com\/mini-vibes\/le-wand-point.html\"><br><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.lewandmassager.com\/mini-vibes\/le-wand-point.html\"><img loading=\"lazy\" decoding=\"async\" width=\"570\" height=\"570\" src=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2019\/12\/le-wand-chrome-point-lay-on-vibrator-01.jpg\" alt=\"Le Wand Point Lay-On Vibrator\" class=\"wp-image-1734\" srcset=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2019\/12\/le-wand-chrome-point-lay-on-vibrator-01.jpg 570w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2019\/12\/le-wand-chrome-point-lay-on-vibrator-01-150x150.jpg 150w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2019\/12\/le-wand-chrome-point-lay-on-vibrator-01-298x298.jpg 298w\" sizes=\"auto, (max-width: 570px) 85vw, 570px\" \/><\/a><\/figure>\n\n\n\n<p>You can put the Point on your mattress and grind up against it that way, or turn over onto your back, with it cupped in your hand and swivel your hips up and down as you hump it from this position too. Want to take another ride on the arm of that chair? Add the mini-vibe to the equation and you might just see fireworks when you climax.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Enhancing Dry Humping with Sex Toys<\/strong><\/h2>\n\n\n\n<p>Ready to take your grinding game to the next level? Sex toys can transform a good dry humping session into a mind-blowing experience. Here&#8217;s how to incorporate different toys into your play:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wand Vibrators for Powerful External Stimulation<\/strong><\/h3>\n\n\n\n<p><a href=\"https:\/\/www.lewandmassager.com\/sex-toys\/wand-vibrators\/\">Wand massagers<\/a> are absolutely perfect for dry humping because of their broad, rumbly vibrations. Place a wand between you and your partner during missionary-style grinding, or use it solo by positioning it on your bed and grinding against it. The powerful vibrations travel through fabric beautifully, making them ideal for clothed play.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Couples Toys for Shared Pleasure<\/strong><\/h3>\n\n\n\n<p>Want to make partner grinding even better? Check out <a href=\"https:\/\/www.lewandmassager.com\/sex-toys\/couples-toys\/\">couples sex toys<\/a> that can be worn during dry humping. Wearable vibrators stay in place while you grind, adding hands-free stimulation that intensifies every movement. The vibrations benefit both partners, creating a shared experience that&#8217;ll have you both seeing stars.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Remote-Controlled Options<\/strong><\/h3>\n\n\n\n<p>For an extra thrill, try <a href=\"https:\/\/www.lewandmassager.com\/sex-toys\/remote-controlled-vibrators\/\">remote-controlled vibrators<\/a> during your grinding session. Hand the remote to your partner and let them control the intensity while you focus on the rhythm. The element of surprise and power play adds a whole new dimension to dry humping.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Things to Consider When Dry Humping with a Partner<\/strong><\/h2>\n\n\n\n<p>There are things to keep in mind when dry humping with a partner, especially if you want to avoid any sort of irritation to the genitals.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Clothes and Fabric Choices<\/strong><\/h3>\n\n\n\n<p>While there&#8217;s no denying that denim, being a fairly sturdy fabric, is great for dry humping, there&#8217;s always a zipper or buttons with which to contend. Rub your penis or vulva the wrong way against any zipper, and it&#8217;s not likely to feel very good &#8211; it can also cause damage to the exterior genital tissues.<\/p>\n\n\n\n<p><strong>Best fabric options for grinding:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sweatpants and joggers (soft, no hardware)<\/li>\n\n\n\n<li>Leggings or yoga pants (smooth, stretchy)<\/li>\n\n\n\n<li>Silk or satin pajamas (luxurious and friction-reducing)<\/li>\n\n\n\n<li>Cotton shorts (breathable and comfortable)<\/li>\n\n\n\n<li>Modal or bamboo underwear (ultra-soft and moisture-wicking)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Underwear<\/strong><\/h3>\n\n\n\n<p>Underwear is also a good option, as the fabric is soft and there&#8217;s still a bit of a barrier there if you&#8217;re trying to play it safe. Of course, if you have kinky underwear with any sort of metal or spikes on it, you probably want to save those for another sexual encounter. But also take into consideration the sensitivity of your partner&#8217;s genitals, as well as yours. Because sensitivity varies from person to person, what clothes might be ideal for one dry humping session doesn&#8217;t mean it&#8217;s the same for another person.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Lubrication for Comfort<\/strong><\/h3>\n\n\n\n<p>Even though it&#8217;s called &#8220;dry&#8221; humping, adding lube can make everything smoother and more comfortable, especially for longer sessions. Browse our <a href=\"https:\/\/www.lewandmassager.com\/sex-toys\/sensual-care\/\">sensual care collection<\/a> for body-safe lubricants that work great with fabric. A little water-based lube on the inside of underwear can reduce friction and prevent irritation while maintaining all the delicious sensations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Best Dry Humping Positions<\/strong><\/h2>\n\n\n\n<p>Although statistically, doggy style is the most preferred position for intercourse, when it comes to dry humping positions, we&#8217;re in a whole other sphere.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"939\" src=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/best-dry-humping-positions-1024x939.jpg\" alt=\"Best dry hump positions to try solo or with a partner\" class=\"wp-image-3372\" srcset=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/best-dry-humping-positions-1024x939.jpg 1024w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/best-dry-humping-positions-314x288.jpg 314w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/best-dry-humping-positions-768x704.jpg 768w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/best-dry-humping-positions.jpg 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Straddling.<\/strong><\/h3>\n\n\n\n<p>Straddling your partner while dry humping can really hit the spot, especially if you&#8217;re the one on top. Vulva owners, in particular, can use the pubic bone of their partner to grind their way to bliss. Penis owners, too, when straddling their partner can also thoroughly enjoy this position too, but it might involve a little bit of trial and error, especially if both partners have penises. In this case, straddling your partner&#8217;s thigh, stomach, or chest can send you over the top into Never Never Land.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Standing.<\/strong><\/h3>\n\n\n\n<p>Oh, hell yes! Although you definitely want a wall or something behind you to support you and your partner so you don&#8217;t go for a tumble, standing and dry humping were made for each other. As it gets more and more intense, you can pull in each other&#8217;s hips, so you&#8217;re as close as possible, and even lift the leg of the partner not against the wall, cradling it in your arm, giving you both more genital surface to dry hump. This is an exceptionally good technique for those who prefer more of an all-over stimulation of their genitals instead of just the penis head or clitoris.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Missionary.<\/strong><\/h3>\n\n\n\n<p>Missionary is quite possibly the best dry humping position. As both partners push their hips into each other, stimulating their genitals, it&#8217;s an amazing position to be in &#8211; and great foreplay if you&#8217;re planning to follow up with some hot missionary intercourse. Want to explore more ways to build arousal? Check out our guide to <a href=\"https:\/\/www.lewandmassager.com\/pleasure-guide\/temperature-play\/\">temperature play<\/a> for adding hot and cold sensations to your grinding sessions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Spooning<\/strong><\/h3>\n\n\n\n<p>Don&#8217;t sleep on spooning for dry humping! This position allows the big spoon to grind against their partner&#8217;s backside while reaching around for additional stimulation. It&#8217;s intimate, comfortable, and perfect for lazy morning grinding sessions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. The Lap Dance<\/strong><\/h3>\n\n\n\n<p>Have one partner sit in a chair while the other straddles them facing away. This position allows for controlled grinding movements and lets the seated partner use their hands freely. Add some music and you&#8217;ve got yourself a private show that benefits everyone involved.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Aftercare and Hygiene Tips<\/strong><\/h2>\n\n\n\n<p>After an intense dry humping session, a little aftercare goes a long way:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Soothing Irritated Skin<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Apply a fragrance-free moisturizer to any areas that feel irritated<\/li>\n\n\n\n<li>Take a cool shower to reduce inflammation<\/li>\n\n\n\n<li>Wear loose, breathable clothing afterward<\/li>\n\n\n\n<li>Consider using aloe vera gel for any friction burns<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Communication Check-In<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Talk about what felt good and what you might want to try next time<\/li>\n\n\n\n<li>Address any discomfort honestly so you can adjust for future sessions<\/li>\n\n\n\n<li>Share what turned you on most about the experience<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Hygiene Considerations<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Change out of sweaty clothes promptly<\/li>\n\n\n\n<li>If you dry humped naked or in underwear, consider showering<\/li>\n\n\n\n<li>Wash any toys used with warm water and toy cleaner<\/li>\n\n\n\n<li>Stay hydrated \u2014 all that grinding is a workout!<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQs and Myths on Dry Humping<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Q: Is it true that only young people and virgins dry hump?<\/strong><\/h3>\n\n\n\n<p>No way. While it may be an introduction to sex acts and sexual movement, dry sex is not just for young people or those who haven&#8217;t had any intercourse yet. People dry hump throughout their life. In fact, there&#8217;s probably an 80-year-old couple doing it right now.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Q: Can you get pregnant from dry humping?<\/strong><\/h3>\n\n\n\n<p>It&#8217;s impossible to say, &#8220;No, absolutely not,&#8221; because stranger things have happened. But, even if you&#8217;re dry humping without your clothes on, the chances are very slim. Like, really, really slim. Like you probably have a better chance of winning the lottery type of slim, when it comes to possibly getting pregnant.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"939\" src=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-and-pregnancy-1024x939.jpg\" alt=\"Can dry humping cause pregnancy\" class=\"wp-image-3373\" srcset=\"https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-and-pregnancy-1024x939.jpg 1024w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-and-pregnancy-314x288.jpg 314w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-and-pregnancy-768x704.jpg 768w, https:\/\/static.lewandmassager.com\/pleasure-guide\/wp-content\/uploads\/2022\/01\/dry-humping-and-pregnancy.jpg 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>If your partner ejaculates during dry humping and, let&#8217;s say, a bit of it gets on your vulva or even in the outer part of the vaginal canal, semen that carries the sperm to fertilize an egg, needs a lot more of a push, so to speak, to get all the way up inside and reach an egg. It&#8217;s not as though sperm have legs and just waltz inside your vagina.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Q: Is dry humping only for vulva-owners?<\/strong><\/h3>\n\n\n\n<p>Absolutely not. It doesn&#8217;t matter if you have a vulva or a penis, when you dry hump the genital regions are being stimulated. At the end of the day, a stimulated genital is a stimulated genital, and stimulated genitals are happy, aroused, and loving that dry humping action.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Q: Is it unnatural to prefer dry sex over penetrative sex?<\/strong><\/h3>\n\n\n\n<p>When it comes to dry sex \u2014 and all sexual acts \u2014 as long as it involves consenting adults, nothing is unnatural, weird, or whatever other negative adjective you want to throw into the mix.&nbsp;Pleasure is not experienced in only one way. What arouses one person, may have zero effect on another person.<\/p>\n\n\n\n<p>When we start deeming certain consensual acts as unnatural, we&#8217;re feeding into a society that still holds archaic beliefs as to what sex &#8220;should&#8221; be and that&#8217;s unfair to all of us. Sexuality and sexual pleasure reside on a very long spectrum and no matter where you fall on that spectrum and what you need to get off is your business. If you&#8217;d rather dry hump instead of having penetrative sex, then that&#8217;s great! It means you know what you want, what you prefer, and what you find sexually pleasurable \u2014 and nothing about that is even remotely unnatural.<\/p>\n\n\n\n<p>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Found this article on dry humping useful? You&#8217;ll love our most popular guides on using&nbsp;<a title=\"coconut oil for sex\" href=\"https:\/\/www.lewandmassager.com\/pleasure-guide\/coconut-oil-as-lube\/\" target=\"_blank\" rel=\"noopener\">coconut oil for sex<\/a>&nbsp;and&nbsp;<a title=\"pussy pumping\" href=\"https:\/\/www.lewandmassager.com\/pleasure-guide\/pussy-pump\/\" target=\"_blank\" rel=\"noopener\">pussy pumping<\/a>&nbsp;(it&#8217;s not what you think). p.s. Find out why everyone&#8217;s so into&nbsp;<a title=\"analingus\" href=\"https:\/\/www.bvibe.com\/analingus\" target=\"_blank\" rel=\"noopener\">analingus<\/a>&nbsp;and <a title=\"how to facesit\" href=\"https:\/\/www.lewandmassager.com\/pleasure-guide\/face-sitting\/\" target=\"_blank\" rel=\"noopener\">facesitting<\/a> right now!<\/strong><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>TL;DR Everything You Need to Know About Dry Humping What it is: Genital stimulation through rubbing\/grinding without penetration (with or without clothes) Major benefits: STI-safe with clothes on, amazing foreplay, accessible for all bodies, can be done solo Best positions: Straddling, missionary, standing against a wall Safety tips: Watch for &hellip; <\/p>\n","protected":false},"author":1,"featured_media":3367,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,25],"tags":[],"class_list":["post-2542","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couples-play","category-self-love"],"_links":{"self":[{"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/posts\/2542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/comments?post=2542"}],"version-history":[{"count":16,"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/posts\/2542\/revisions"}],"predecessor-version":[{"id":3979,"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/posts\/2542\/revisions\/3979"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/media\/3367"}],"wp:attachment":[{"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/media?parent=2542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/categories?post=2542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lewandmassager.com\/pleasure-guide\/wp-json\/wp\/v2\/tags?post=2542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}