{"id":4702,"date":"2026-09-07T13:22:37","date_gmt":"2026-09-07T13:22:37","guid":{"rendered":"https:\/\/etherealwebsolution.com\/?page_id=4702"},"modified":"2026-09-11T08:52:32","modified_gmt":"2026-09-11T08:52:32","slug":"ethereal-link-replacer","status":"publish","type":"page","link":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/","title":{"rendered":"Ethereal link replacer"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4702\" class=\"elementor elementor-4702\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0a710e1 e-flex e-con-boxed e-con e-parent\" data-id=\"0a710e1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;mk_ext_is_sticky&quot;:&quot;false&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1b2a2ae elementor-widget elementor-widget-html\" data-id=\"1b2a2ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;mk_ext_is_infinite&quot;:&quot;false&quot;,&quot;mk_ext_is_scrollme&quot;:&quot;false&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\" \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n<title>Ethereal Link Replacer \u2014 safe search &amp; replace for WordPress | Ethereal Web Solution<\/title>\n<meta name=\"description\" content=\"Rewrite links, URLs and text across your entire WordPress database \u2014 serialized data included \u2014 with a dry-run preview and a full CSV change log. A free plugin by Ethereal Web Solution.\" \/>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin \/>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap\" rel=\"stylesheet\" \/>\n<style>\n  :root {\n    --paper: #FCFBF9;\n    --ink: #1A1C22;\n    --muted: #5B5E68;\n    --hairline: #E5E2DB;\n    --dark: #14161C;\n    --dark-2: #1E212A;\n    --accent: #929ED1;        \/* brand periwinkle *\/\n    --accent-deep: #4C5A9E;   \/* darker periwinkle for buttons\/links (readable on white) *\/\n    --accent-soft: #ECEEF8;\n    --old: #A8442F;           \/* struck-through \"old\" value in the diff *\/\n    --focus: #4C5A9E;\n    --maxw: 1120px;\n  }\n\n  * { box-sizing: border-box; }\n\n  html { scroll-behavior: smooth; }\n  @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }\n\n  body {\n    margin: 0;\n    background: var(--paper);\n    color: var(--ink);\n    font-family: \"IBM Plex Sans\", system-ui, sans-serif;\n    font-size: 17px;\n    line-height: 1.6;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  h1, h2, h3 { font-family: \"Space Grotesk\", sans-serif; font-weight: 700; letter-spacing: -0.02em; line-height: 1.08; margin: 0; }\n\n  a { color: var(--accent-deep); text-decoration: none; }\n  a:hover { text-decoration: underline; text-underline-offset: 3px; }\n\n  code, .mono { font-family: \"IBM Plex Mono\", monospace; }\n\n  :focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; border-radius: 2px; }\n\n  .wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 28px; }\n\n  \/* ---------- header ---------- *\/\n  header {\n    position: sticky; top: 0; z-index: 20;\n    background: rgba(252,251,249,0.86);\n    backdrop-filter: blur(8px);\n    border-bottom: 1px solid var(--hairline);\n  }\n  .nav { display: flex; align-items: center; gap: 28px; height: 66px; }\n  .brand { display: flex; align-items: center; gap: 10px; font-family: \"Space Grotesk\"; font-weight: 500; letter-spacing: -0.01em; color: var(--ink); }\n  .brand .mark {\n    width: 26px; height: 26px; border-radius: 6px;\n    background: var(--ink); position: relative; flex: none;\n  }\n  .brand .mark::before, .brand .mark::after {\n    content: \"\"; position: absolute; height: 2px; border-radius: 2px; left: 6px; right: 6px;\n  }\n  .brand .mark::before { top: 9px; background: var(--old); width: 8px; }\n  .brand .mark::after { top: 15px; background: var(--accent); width: 14px; }\n  .logo { display: block; height: 32px; width: 134px; background: url(\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYwAAABfCAYAAAD75PB\/AAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGYktHRAD\/AP8A\/6C9p5MAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAHdElNRQfoCgcHEzSksLD1AAACrXpUWHRSYXcgcHJvZmlsZSB0eXBlIHhtcAAASImdVkuyozAM3OsUcwRbsiU4DgVm96pmOceflvkMIY5JTagQCPq02i0Z+vPzm37hEzkpyWyDTDboYkEXzZY0cvB7nbWY+DNZ2DRq0lVZs0zb\/6f1yiaFwsTh9UBohpPKlDmlpLew2zMPPVjCEWRCqJWsfrgYrLjoCkPjVaKMfuAqCOPMOC9bEPyKjQgLNDbw4glYyGGFqYcLoLKJCu5HC3AfUWIBzv05imYFItTpQNneg11LgpO8F4TAGQFnLnQU44Y4Zzhmp9GhAzKK5CI7oS3cNcFkiQA3uXPb7Cwv6gzkHRsC6FnHo4x6F7WoeRmVSjCkClqzh3JcuaI9AGji4DYEGkc1J48XxI8y83rSiBRtFP9sDqxNHW2MeeX9wi\/hwFFjaf9HEPSuiG8FkWIVAoIpy0J3ZVSdFr0YeeBdhEUFvwus0HmnOIKLg9rVv2RzQuHWFwhlQb2xb7QLZL\/DlIioG345GTjCUoAIylyJW6vU8fCTgm8YnejsBLiSpAiTd7ckXqAgKAl35svad2sloptLNlCfxprFMEiAEeeIZBFpWPwz4gpjygnH1YDgjBapf0Z10wHSGGSEK4wlNJBd0txRUaN+zK4dU0Z4\/6psuBK+jjMj4S0Rvbo+05yTLwyWZTjXDFSDozv8lmG\/z7bW\/tC05\/jvqOwVAvV1e+3vfnvT9\/3db2+6o3jZw0J7Dzsa+9gyvZlp6+bNZe9m+Tzq99A+QnwmDL51SEmLRswjrBHmMYc81T1kG7ZNhx6L9EzjdyzSM41dFuvLRx0jzzTuLA7o\/nCdia+l0gl5i30dGajedY5jBqHi+52pv\/Tw4FMMu5+X5\/OMeaRK10OQb6RKLZLvbg9tVN+iPgx\/R3l\/j0Nj\/gUorzzKUK6SZQAAFx5JREFUeNrtnXm4HFWVwH\/ZIWB4EEEIQQIosqgViKw6RUD5xgUFRFkz8ihlpyphLYFBAwJOf2zhNkaC5hJWhY+RF0FREXhpBSSjkIuMoGxJ1BBAMwkgJJLA\/HHrmU6nu19VdXVXd+f8vq+\/vK66y7k3XffUXc45IAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiC0GKG5C1ADgwDtiv7vhRY2WIZeqLPAAtz7ZHmMQLYvaKtrWQp8Ey1G0qb4cCxwD4Z1PMO8Bb2d7Qy+vs1YBHwIrAo8JzVzWxoxu1ptC\/uCTznF62qUGmzPXAisHnFrVeB2YHn\/LmVHaC0OQg4DDvW1OMpYE7gOW+1Ur5GyFxhKG0+DhzK4J3VbOYDdwWes6bi+pbAKxXXlgMLgP7oM69JMk0GrgEmVrk3B7iY2spjGPA34g2+ZwIzMpD3iRqyVnIOcFWV64cCfRnI0QjjgJcqLyptvgzcmaCc24DHyr4PAUZjB6kdgf2juqrxDrAY+BXwIHB\/4Dl\/zbKRGbSnnL2BKQ2KND7rNtZo99bA48A2NZIsBfYIPGdps2WJ5BmLHV+GxswyNfAc1QrZsmB4loUpbd4LlIjfWfOBu2rc2xoIGpTxy3XKL6cHO5hPjr4vxw7gN2EVSRbcCPTWud+LfSs5sEado4n\/pn4Y2SiMiTHT7TzI\/UW0fhY1Ediszn0nYXkPBJ5zY70ESpuDgcuBj1XcGgpMiD7\/AbyrtLkXuCzwnMfIhkzbo7R5HLiC9C9+HwOarjCAmdRWFmDHke8AR7RAFrC\/u7jjH8CeLZIrEzJVGFHjk3TWU4HnXFHrptLmQeB2YExKeSYRT2FU0gNMiz792Df\/\/gb6ZQb1lUV5vQ9RW2kMUGtmOB34ZgNy1uLAGu2PW9+cKG0r6QcOqHM\/89l14Dn3K20ewr69HzlI3Z8HPq+0uRuYEnjOmw1Wn2l7As+5RmnzLPb5e0\/e8lRDabMT8IUYSQ9V2uwUeM7zzZYpRbs7alsgyeDe8vICz\/kJ8AnsG2pe8kzGDuIPYd8Q0+SfmiB9D3bZSuhAor2KY4g\/Mz0cKClt3pe37FXaci\/2+Vuctyw1OIt4M6Bh2GVaoUGyVhiZE3jO77FrqllN3dMyGbumn\/QNvjdlXRNybq+QksBz3gHOSJBlEnBH3nLXaMuTwF7k\/\/ytg9KmB\/hKgizHR3mEBmh7hQEQeM4r2OWFH+YsSg92aeUh4u8nHJqyrr1zbqvQAIHnPEyNE1o1OEBpk2QAbGVbBp6\/dlJqpwGbJki\/KXBq3kJ3Oh2hMAACz1kVeM4x2AH73ZzFmYw9LjkxRtqelHVsmXMbhcbpS5j+G3kLXIvo+Tsau5+X6\/MXHSE+PUXWM6K8Qko6rvMCz7lYafMnYDawcY6i9BBvg1qoTy9wfBPKTXpqqBn8LmH6nZQ2Owee86e8Ba9F4DnTy56\/jXISYwrplNY4rK3KzTnJ3fF0nMIACDznB0qbF7FvcHluFvYwuNJYQf3jnbV4Ncd2tZJe6p9m6mSeSpHnEODqvAWvR+A5tyttXiC\/528aa4\/Mj0uY90xEYaSmIxUGQOA5v1Ha7APcA3wkQdZXsSdTJmIH\/IkMfma\/Hj1YpbEH1W0N+kj3Bj0\/4y5rd+bR2NHlaiykitFeC3kxRZ5dcpQ3Ng08fw2htPkU8FrgOY8qbWYClyYsYqLS5qDAcx5sYXd1DR2rMAACz1mktNkfuxn32QRZ+1h\/ffmw6JNmcO8B7sbONJZX3JuTosx5dK+7kFr003pbjaYSeM4qpc3bWBcpcRmbt9wJ2jfw\/N2MfQkrZ0WTqj2LtTOw7wLnA5ukKEMURgo6ZtO7FoHnvIE1groS64KhnNcSFNWHXR7ZAWvhnZSJVB\/w+oFrE5SzAjvlFrqDpAZ5W+QtcBICz3kj8JwvAqewdhn1GeCRrOtS2uwK7ATMjepeBtySoqjPKG06YibXbnS8wgB77j3wnHOBzwDPRpeXAT9NUdxCrOI4EDAJ805lrXuRcqYRTwmtiPIvaGqHCa3knYTpk8xG2obAc2ZhXXTsGHjOroHnrGpCNWcD1wWeU77hfTXJ+3godpYhJKQrFMYAkYfMD2HfQrYNPOeJBorrxw7ecxPmq+Wfpxc7ba9ltX4TdpayoBV9JbSM0QnTd+xhh8Bz1gSek2bfZlCUNltiXwhnV9T5LPCTFEVOiXzfCQno6D2MakRvHy9kVNxy1jryi+veYwJ2aWp6lXt90WdC9OmJ6uhvbS8JrUBpMxQYlTBbxyqMJuMDt9bwuXUVdlk6CRtjbTkuzrthnURXzTCayDSS7WtMpb7B3kKskuhDlEU3k+bI6bMp8nQ1SptRwAnU2AsMPGceyW1eAE6NyhZiIgojPr3E39Powc5MhA2b3VLkuSdvoduQXmBe4DlL6qSZkaLc92HdzQsxEYWRjMnEPy7YDDfjQmexa8L0Lwaek8T\/1IbCVAY3ZvwB8JcUZYsX2wR03R5Gk1mOfZOJowwmkN8m9vYxZRSay6cSphe39hUobT4HvBx4zuP10gWes0Zpcx3wXwmr2E1p8+nAc36Wd1s7AVEYyZmOnSJvHyNtL\/nYVEwgWyO4hS2Q+XiydRGyHLvuvbwFsq+H0mYjkimM32MjwwnrUm6oNxjXAxeSPODT2YAojBiIwkjHdGofny2n1T6S5rD2BFZW9NEahZG13GA3SftbIHs1TiG+BfIK4IQojoYQobSZCGwL3BsnfeA5K5Q2N5EsFgnAJ5U2H41ifwh1EIWRjj7iKYyJrD062woWki5gU570NkHmXJfjlDZbYN9047AM+PfAc9Kc8ul2zgFUhaHeYFyDjXuRJBb5EOwsoxlek7sKURjpWI719xRnBjEROTpbj4Vk70MqN4WhtNkE62EgjlHYQ8Bp7bTRrbQZBozEjg0jsZbnw8uujaj4ewTwQuA5f85Yjm2w3hZOTJIv8JwXlDY\/Zn3fVoNxlNImDDxnaead2kW0rcKIfrgDP8jKH2jlZziwPPCcp1soYh+iMIQyIkd81zO499angf8MPOdHOYp7rdLmKuyzM\/BJ65bkPOCKjOWbBtwUeM5bKfJeSXKFMQoIgAsybkdXkbfCOFppcwj2hzqgIAZ+vEMSlvUj4IgWyr4gZroJLZRJaB7bKW3KgzINwe5RbAXsjo1jsTfVf7fvYJVEH3BHFKc+by4E7qT+S1j5DKPetd9kKZjSZjTWPmJSmvyB5zyitHkM2Cdh1pOUNt9KqaQ2CPJWGHOx65S1ZhDVfqCV9wf+zcodSFwWxkw3scVydSKdEEDpq6x9a90N+DvwcvR9DdYr7c+AfwBvAK8Af8AGUfpDGw5CbwSe83LjxTSFrwG\/DDynkVgmM7C2GUkYC3jIabWa5K0w3hrEerOdWZi3AFWYjN2Mn5Bhmf3YteRm0Qcc2sTys2J64Dk3AihtfOwb+lHtHE61E1HaDMH6jfpyg0XdibXJiHP8vZxAaTMz4Ub7BoNYencXk8l+CWwyzZ0l9TSp3EU0SakHnlMEfgU8oLTZsUnyb6gcDiwOPGdBI4VER5SLKbLuDHwh705oV\/KeYQjNwZCNweBD0b89LZD5Yjor4p6HdXj3O6XN2cAcsaPIhLOByzMq6wbgIpKHXz6L5GENNghkhtGdLMcuJTX6EWoQeM7rwJHY0zWzgWeUNhcobT6Ut2yditJmb2CLwHPSxLdYj+j\/KI69VCWu0ibVhnu3IzMMQUhJ4DkLlDZTsW+yHwQuAy5T2izDuvp4HngJuzn+GvBPYCXwFvBc4DnP5d2GNuNckoUzjsMMbNyLpEeGzwGOybtD2g2ZYQhCAwSe8z3g1orLW2BPfnnYzXGFddtyO\/b4933YGcn5ecvfLihttgc+ju2nzAg8ZxH2YEVSjlDajM+7X9oNURiC0DgnY+0skjAMuDTyxipYN+MvBp6zsgllX5kizwjycRza1siSlCA0SOA5byptjgDmA5smyDoUuFlpMynwnIV5tyNroiOyewGPB56zuk6692A9C49R2hwDLG6COM8BH0iY52tKm+mB57zRqj5rdzYIhaG02QVYEnjOa3nLInQngec8rbQ5Dbg5YdYtgLuUNh8PPGdV3u3ICqXNdtilOhf4ldLmgDq2DacAY6K\/byB+ZMskvJ4iz2ZYX1YSpySiqxWG0mZjrC\/9k4HFSpt92ti6VehwAs+5RWnjYi2VkzAJu89xct5tyAKlzRTgOtYeZ92+lrKIfMaVuyMfBRyZtUFvVM8LwPsTZvWVNte2+5HpaDb3FawR7PNAIfCcv2VdT9fuYSht9gKewL69DAG2I71zNUGIi0+6N+STlDYd7V5babOZ0uaHwC2sa\/tQ72jrUaw7iI\/AhmTNlMBz1mCVWFJ2AL6UfW9lh9JmHPBL7IGBw7EnvHqbUVfXzTCUNkOxJ1MuYl0FcX\/gOWli\/gqtYXuy9ym1ghaHyA08Z6XS5kvAb0luMDZTafNEJwbyUdp8EjtgVZ4sWo1dZqrFtCrXTlTaXBJ4zj8yFnMgIl\/S\/5czsa5G2g6lzT7YU2BbV9xKGk8+Fl2lMCI3DbcC+1W5fUPC4oTW0ktz3orGYoMUtYzAc55T2pwE3JEw62jsfsakyOis7VHajAS+jR34q61Y3FdreSlavturyq3Nsc4eVZayBp7zutLmRpKfftpXabNf4DmPZtt7jREdEJgNbNyqOrtmSUpp42GXoKopiyWIqX+7sqDJ5Y\/Ko1GB59xJOl9GHwRuykPmpChtPoKdSZ1F7bFkVp0izqlzL4jW5bPmauDtFPnOSZGnaShtvgHcRguVBXSBwlDajFXa3I3VtGNqJJsTrWEK7cc07B5T1p95eTcMO5DOT5HvcKVNWw1Q5ShthihtBtpWL1jUYmz0wWplfAD4bJ28O5E8CNKgRJEB706R9QtKmx2ylicpSptRSpvbsb7XmqFQ69LRCkNp82msC4bD6iRbA3wvb1mFDY\/I9uBI4P9SZL88WrJpK5Q222I3WK8CNhokua5zlPZsBo+7fXaTmpEmOuBw7F5GbihttsT6eMvNZUlHKgylzUZKm+uwby\/bDJL8\/m40ihI6g8g1xfFA0vgKI4AfKG3el3cbBlDaHI19QTsoRvLV1HhRU9psgY2oNxj7R5u6mRJ4zm+x7umT0qu0SbphnglKm92xM7p986h\/gI5TGEqbPbF7FacTb0o2K0YaQWgagefcQzr3FOOAO6KTf7mhtBmjtLkFG8Fu85jZ7qtjS3EaNrxtHJq1NHd1ijzvwR7TbylKm88AD9MG4Z47RmFE66bnY+MH7xIz2xLgx3nLLgjA+diHPikHYE8h5YLS5gDgSWBKwqzX1yhvJHBqgnIOU9pMaELT5gJpoiWeERkBtgSlTYAdw3KZ2VTSEcdqox\/MLcAnEma9sd0tNFNSy14haTjKuDhUX1KJW98BwDeb3Skt6otUBJ6zRmlzJPZU2JYJs5+rtHkk8JyWnfRT2gwHLsW+4ScdIBdjPfJW4zjszCkuw7EHI6Zl2b7Ac95V2iiSG\/ONx+4h3JowXyIipaSws7G2oe0VRmT9ei3JNewaunc5qr\/F9c1oMP\/k6NNOJHWb8EqjFQaes0RpcxjwE5JFMRwCzFba\/CLwnLcyak9NlDa7Yl2xT0xZxIw6m91JZypglcy0rNpXxmzs0nZSI7cp1FYYrzYqlNJmDHAXcHADxTQsRzWyVhgNP1QDRBtjs0hvlv\/f0RG6ZrIHgz\/4SzOq603sUdHBrKFX0PgAP8BcrG+awerrr3GvHzgwI1nSUus3ORe78brHIPnfxfZ7PxkQeM4j0emny7Cbx3HX8gd7tuK2Z4BZSpvv1rg3gnTL1W9jj6zWsz\/5H+DfiO+mZxXwQApZBiWyyj8Cqxw\/QryZ1NtRG2rxJHAP9shwnPKOU9ocVXFtaIL+qcYzJDcajUWm53gjQ5u5xO+sNdjTFNUYRnqF9mvg2BYoDEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEFoEi0P8ScIQv4UiqWxwIjQd7PydZa0\/k2wwc9eCX33tTboix7gL6Hvrqpyfyvg76Hvrqm4Pi703SXxaukORGEIQptSKJa+B5xSPlAViqUe4MLQd8+tSHsNcFHou29E33cHTsY6y1sN3Bf6bn+hWNoN+Drwv9E9B7gq9N0nM5D3XOCDWIeBA95qnw9999qyNLsBU7FOK5dgXZ1vBVwX+u5vozTbAEHou+dXlD8FeDX03Z9XXO8BLgT+COwcXT4YuD\/6++HQd+cWiqUbQ989oSzfIdjwzn+N5NkB6\/jvktB3X47SDMc6n5wf+u6ZFfXeHPruVzL+b29r2t69uSBswAxj\/Ze6oVR37PmvtIVi6fNYL8Pnhb67rCLd14GTQt9dGaXdCOvm+7hGBC0USy4wNPTdk+qk2Q84ETg99N23yq5vBMwoFEtbhL77i6gd1do4lOpedIcCw0Lf\/X5ZmTr03fOq9NHA\/QAYGfru1ypkHAdcXyiWTo9mDyMAA4wsFEvbhL77UiP91Ol0TMQ9QRAGJ1pe6QVOrFQWhWJpJLBiQFkARH8PH6TM\/QrF0jmFYqleLO\/xwNN1yhgOfAs4o1xZlMlwGnBqtFTV7D7aBdg39N31wuZGSuJU4IqKW4rmxOToKERhCEJ3cRxwWei71QIYjQXWGawLxdK2wD9rFVYolk7Chpa9AnigUCxdVCNpP3BCoVgaU+P+IcDtoe++We1m6LvvAN8Hjm1BH50CXFDrZrSv81KhWNqx7Nofga0LxVJbhErNC1mSEoTu4sPAmkKxtG\/F9UeBgXX5bwKbYvcPPkT9IFlns+6y2HmFYumyaID\/F6HvLikUS5cAswrF0uvYEK0\/LdtE3hO4bRDZS8CV2IiEzWSr0HcXDpLmYWAfoK\/s2neBM7DBrzZIZIYhCN3H\/cDPKz4vDNwMfffiaNP8BOA84MpCsVRrLIg9RoS++0Tou8dEZW4K3Fkolo4pS\/JujGLipGmUuHWsky703d8ATrTnskEiMwxB6CyGUP9041PA5qHvPlZ5o3J\/IPTdfwIPFoql92OXjH5cpbxrgO+UfZ9RObuoJPTd5cAthWLpNuD2QrH0a+B3wH7An+pk\/QTweJ379Qb6ujJV8EqhWBof+u5f6qTZDxsiupKbga9W9MkGg8wwBKF9+QdQuWa+I7BdlbQbYfcnbgOChPUsrlEmoe\/OxMaRvwD4XOi7F8UtNFIsPwN2xy4zHVvr7bxQLA0BPGx87eVV2j0g59ZVro8HFiVo7yzqLCsViqX3AuNC332+SpvuBQ6uMyPrajbIRgtChzCP9TeBvwpsXCiWxg9ciDaax4S+uzr03b9jl4LmRAZncfgi8GCtm6HvlkLf\/Xbouz9N0QYXeDL03dXAJcANlRvj0Qmqa4DZoe++EW2Mbx7ZV5QzHzioUCxVHrntBWLLFvruM8AThWLpgkhRlcuyFTATe\/y4FncDR6foi45HDPcEoY0pFEuXApsDzwOTsAPjfcB1wHPASuyG8oXRSZ6BfBOxM41V2JnKvdjloGnR902wNgY9WKO+OxuUc3\/WH0THAH2h7\/aVpfsocCawFGswNy76zAx9d35Zuh2A6cAyrIHho6Hv3l0olvaM2vBs1LYPR3X8qEIeHfquV3FtHUO7QrF0ONZw7znsrGZHYBTWcG9plGZjrGHjaWX5hgH3YI8ol+\/RdD2iMAShzSkUS6Oxyy6Ly20ooiOxhL7717xlTNGmzVjrGmRZivxbAqND302yFFWrrK2xS2B\/rnXst0qeHmD1gGW9IAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiC0A38P7o5nFToLO+eAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI0LTEwLTA3VDA3OjE5OjM3KzAwOjAww2P9\/gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNC0xMC0wN1QwNzoxOTozNyswMDowMLI+RUIAAAAodEVYdGRhdGU6dGltZXN0YW1wADIwMjQtMTAtMDdUMDc6MTk6NTIrMDA6MDBxfEK9AAAAFnRFWHRwZGY6QXV0aG9yAE1hbnVlbCBaZWxhG4NMwQAAACB0RVh0eG1wOkNyZWF0b3JUb29sAENhbnZhIChSZW5kZXJlcinPeX2DAAAAAElFTkSuQmCC\") left center \/ contain no-repeat; }\n  .foot .who .logo { height: 36px; width: 150px; margin-bottom: 14px; }\n  .nav .spacer { flex: 1; }\n  .nav-links { display: flex; gap: 24px; }\n  .nav-links a { color: var(--muted); font-size: 15px; }\n  .nav-links a:hover { color: var(--ink); text-decoration: none; }\n\n  .btn {\n    display: inline-flex; align-items: center; gap: 8px;\n    font-family: \"IBM Plex Sans\"; font-weight: 600; font-size: 15px;\n    padding: 10px 18px; border-radius: 8px; border: 1px solid transparent; cursor: pointer;\n    transition: background .15s ease, border-color .15s ease, color .15s ease;\n    white-space: nowrap; flex: none;\n  }\n  .btn-primary { background: var(--accent-deep); color: #fff; }\n  .btn-primary:hover { background: #3B477E; text-decoration: none; }\n  .btn-ghost { background: transparent; color: var(--ink); border-color: var(--hairline); }\n  .btn-ghost:hover { border-color: var(--ink); text-decoration: none; }\n  .btn-lg { padding: 14px 24px; font-size: 16px; }\n\n  \/* ---------- hero ---------- *\/\n  .hero { padding: 84px 0 64px; }\n  .hero-grid { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: 56px; align-items: center; }\n  .eyebrow { display: inline-flex; align-items: center; gap: 9px; font-size: 14px; color: var(--muted); margin-bottom: 22px; }\n  .eyebrow .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent-deep); }\n  .hero h1 { font-size: clamp(30px, 4.2vw, 50px); line-height: 1.12; text-wrap: balance; max-width: 16ch; }\n  .hero p.lede { font-size: 20px; color: var(--muted); margin: 22px 0 32px; max-width: 34em; }\n  .hero-cta { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }\n  .hero-note { font-size: 13.5px; color: var(--muted); margin-top: 16px; }\n\n  \/* diff panel *\/\n  .panel {\n    background: var(--dark); color: #E8E9EC; border-radius: 14px; padding: 26px 24px;\n    box-shadow: 0 24px 60px -30px rgba(20,22,28,0.55);\n    font-family: \"IBM Plex Mono\"; font-size: 14.5px; line-height: 1.9;\n  }\n  .panel .titlebar { display: flex; gap: 7px; margin-bottom: 20px; }\n  .panel .titlebar i { width: 11px; height: 11px; border-radius: 50%; background: #3A3E48; display: block; }\n  .panel .row { margin-bottom: 18px; }\n  .panel .lbl { display: block; font-family: \"IBM Plex Sans\"; font-size: 12px; color: #8A8F9B; margin-bottom: 5px; }\n  .panel .old { color: #C98C80; }\n  .panel .old s { color: #8f6a62; text-decoration-thickness: 1px; }\n  .panel .new { color: #B9C2E6; }\n  .panel .len { background: rgba(146,158,209,0.30); color: #CED6F2; padding: 0 4px; border-radius: 3px; }\n  .panel .len.old-len { background: rgba(168,68,47,0.28); color: #E7A99D; }\n  .reveal { opacity: 0; }\n  .reveal.in { opacity: 1; transition: opacity .5s ease; }\n  @media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transition: none; } }\n\n  \/* ---------- generic section ---------- *\/\n  section { padding: 72px 0; }\n  .section-head { max-width: 40em; margin-bottom: 44px; }\n  .section-head h2 { font-size: clamp(28px, 3.4vw, 40px); }\n  .section-head p { color: var(--muted); font-size: 18px; margin: 14px 0 0; }\n\n  \/* problem strip *\/\n  .strip { background: var(--accent-soft); border-top: 1px solid #D3D9EF; border-bottom: 1px solid #D3D9EF; }\n  .strip .wrap { padding-top: 40px; padding-bottom: 40px; }\n  .strip p { font-size: clamp(20px, 2.6vw, 27px); font-family: \"Space Grotesk\"; font-weight: 500; letter-spacing: -0.01em; margin: 0; color: #2E3566; line-height: 1.35; max-width: 24em; }\n  .strip .mono { color: var(--old); }\n\n  \/* features \u2014 rule-led list, not identical cards *\/\n  .features { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 56px; }\n  .feature { padding: 26px 0; border-top: 1px solid var(--hairline); display: grid; grid-template-columns: 34px 1fr; gap: 18px; }\n  .feature .gi { width: 30px; height: 30px; color: var(--accent-deep); margin-top: 2px; }\n  .feature h3 { font-size: 19px; font-family: \"IBM Plex Sans\"; font-weight: 600; letter-spacing: 0; }\n  .feature p { margin: 7px 0 0; color: var(--muted); font-size: 15.5px; }\n\n  \/* how it works \u2014 a real sequence, so numbered is justified *\/\n  .steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }\n  .step { border-top: 2px solid var(--ink); padding-top: 16px; }\n  .step .n { font-family: \"IBM Plex Mono\"; font-size: 13px; color: var(--accent-deep); }\n  .step h3 { font-size: 18px; font-family: \"IBM Plex Sans\"; font-weight: 600; margin-top: 8px; }\n  .step p { color: var(--muted); font-size: 15px; margin: 8px 0 0; }\n\n  \/* cli *\/\n  .cli { background: var(--dark); color: #E8E9EC; }\n  .cli h2 { color: #fff; }\n  .cli .section-head p { color: #A6ABB6; }\n  .terminal {\n    background: var(--dark-2); border: 1px solid #2A2E38; border-radius: 12px;\n    font-family: \"IBM Plex Mono\"; font-size: 15px; padding: 22px 22px; overflow-x: auto;\n  }\n  .terminal .prompt { color: #AAB4E2; }\n  .terminal .flag { color: #C7A8F0; }\n  .terminal .val { color: #E8E9EC; }\n  .terminal .comment { color: #6E7482; }\n  .terminal .line { white-space: pre; display: block; }\n\n  \/* safety *\/\n  .safety { display: flex; gap: 20px; align-items: flex-start; background: #FFF6E9; border: 1px solid #F0DFC0; border-radius: 12px; padding: 24px 26px; }\n  .safety .gi { color: #B4791B; flex: none; }\n  .safety h3 { font-family: \"IBM Plex Sans\"; font-size: 18px; font-weight: 600; }\n  .safety p { margin: 6px 0 0; color: #6b5a3c; font-size: 15.5px; }\n\n  \/* faq *\/\n  .faq details { border-top: 1px solid var(--hairline); padding: 6px 0; }\n  .faq details:last-child { border-bottom: 1px solid var(--hairline); }\n  .faq summary { list-style: none; cursor: pointer; padding: 18px 0; font-family: \"Space Grotesk\"; font-weight: 500; font-size: 19px; display: flex; justify-content: space-between; align-items: center; gap: 20px; }\n  .faq summary::-webkit-details-marker { display: none; }\n  .faq summary .pm { flex: none; width: 20px; height: 20px; position: relative; }\n  .faq summary .pm::before, .faq summary .pm::after { content: \"\"; position: absolute; background: var(--accent-deep); border-radius: 2px; }\n  .faq summary .pm::before { top: 9px; left: 0; right: 0; height: 2px; }\n  .faq summary .pm::after { left: 9px; top: 0; bottom: 0; width: 2px; transition: transform .2s ease; }\n  .faq details[open] summary .pm::after { transform: scaleY(0); }\n  .faq .answer { padding: 0 0 20px; color: var(--muted); font-size: 16px; max-width: 62ch; }\n  .faq .answer code { background: #EFEDE7; padding: 1px 6px; border-radius: 4px; font-size: 14px; color: var(--ink); }\n\n  \/* final cta *\/\n  .final { text-align: center; }\n  .final h2 { font-size: clamp(30px, 4vw, 46px); }\n  .final p { color: var(--muted); font-size: 19px; margin: 16px auto 30px; max-width: 32em; }\n\n  \/* footer *\/\n  footer { border-top: 1px solid var(--hairline); padding: 46px 0; }\n  .foot { display: flex; justify-content: space-between; gap: 24px; flex-wrap: wrap; align-items: flex-start; }\n  .foot .who { max-width: 32em; }\n  .foot .who .brand { margin-bottom: 12px; }\n  .foot .who p { color: var(--muted); font-size: 14.5px; margin: 0; }\n  .foot .cols { display: flex; gap: 56px; flex-wrap: wrap; }\n  .foot .col a { display: block; color: var(--muted); font-size: 14.5px; padding: 4px 0; }\n  .foot .col a:hover { color: var(--ink); text-decoration: none; }\n  .foot .col .ttl { color: var(--ink); font-weight: 600; font-size: 13px; margin-bottom: 6px; }\n  .legal { margin-top: 30px; color: var(--muted); font-size: 13px; }\n\n  .gi { display: inline-block; vertical-align: middle; }\n\n  @media (max-width: 900px) {\n    .hero-grid { grid-template-columns: 1fr; gap: 40px; }\n    .features { grid-template-columns: 1fr; gap: 0; }\n    .steps { grid-template-columns: repeat(2, 1fr); }\n    .nav-links { display: none; }\n  }\n  @media (max-width: 560px) {\n    body { font-size: 16px; }\n    .hero { padding: 56px 0 40px; }\n    .steps { grid-template-columns: 1fr; }\n    .foot { flex-direction: column; }\n  }\n<\/style>\n<\/head>\n<body>\n\n<header>\n  <div class=\"wrap nav\">\n    <a class=\"brand\" href=\"https:\/\/etherealwebsolution.com\/\" aria-label=\"Ethereal Web Solution \u2014 home\"><span class=\"logo\"><\/span><\/a>\n    <span class=\"spacer\"><\/span>\n    <nav class=\"nav-links\">\n      <a href=\"#features\">Features<\/a>\n      <a href=\"#how\">How it works<\/a>\n      <a href=\"#faq\">FAQ<\/a>\n    <\/nav>\n    <a class=\"btn btn-primary\" href=\"https:\/\/wordpress.org\/plugins\/ethereal-link-replacer\/\">Get it free<\/a>\n  <\/div>\n<\/header>\n\n<main>\n  <!-- HERO -->\n  <section class=\"hero\">\n    <div class=\"wrap hero-grid\">\n      <div>\n        <span class=\"eyebrow\"><span class=\"dot\" aria-hidden=\"true\"><\/span> WordPress plugin \u00b7 Free &amp; open source<\/span>\n        <h1>Search and replace across WordPress, without corrupting serialized data.<\/h1>\n        <p class=\"lede\">Ethereal Link Replacer rewrites links, URLs and text everywhere they live \u2014 posts, options, meta, terms and comments \u2014 and repacks serialized arrays so nothing breaks. Preview first, then apply.<\/p>\n        <div class=\"hero-cta\">\n          <a class=\"btn btn-primary btn-lg\" href=\"https:\/\/wordpress.org\/plugins\/ethereal-link-replacer\/\">Get it on WordPress.org<\/a>\n          <a class=\"btn btn-ghost btn-lg\" href=\"#how\">See how it works<\/a>\n        <\/div>\n        <p class=\"hero-note\">Works from the admin screen or via WP-CLI. No account, no tracking, no external requests.<\/p>\n      <\/div>\n\n      <!-- diff panel: the thing that makes it different -->\n      <div class=\"panel\" aria-label=\"Example of a safe replacement inside serialized data\">\n        <div class=\"titlebar\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><\/div>\n        <div class=\"row\">\n          <span class=\"lbl\">post content<\/span>\n          <div class=\"old\"><s>https:\/\/old-site.com<\/s><\/div>\n          <div class=\"new reveal\" data-reveal>\u2192 https:\/\/new-site.io<\/div>\n        <\/div>\n        <div class=\"row\">\n          <span class=\"lbl\">serialized option \u2014 string length recalculated<\/span>\n          <div class=\"old\">a:1:&#123;s:<span class=\"len old-len\">20<\/span>:\"<s>https:\/\/old-site.com<\/s>\";&#125;<\/div>\n          <div class=\"new reveal\" data-reveal>a:1:&#123;s:<span class=\"len\">19<\/span>:\"https:\/\/new-site.io\";&#125;<\/div>\n        <\/div>\n        <div class=\"row\" style=\"margin-bottom:0\">\n          <span class=\"lbl\">result<\/span>\n          <div class=\"new\">valid, unserializable, nothing corrupted \u2713<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- PROBLEM STRIP -->\n  <div class=\"strip\">\n    <div class=\"wrap\">\n      <p>A raw SQL replace changes the text but not the <span class=\"mono\">s:20:<\/span> byte count in front of it \u2014 and every serialized setting on the site breaks. This plugin fixes the count.<\/p>\n    <\/div>\n  <\/div>\n\n  <!-- FEATURES -->\n  <section id=\"features\">\n    <div class=\"wrap\">\n      <div class=\"section-head\">\n        <h2>Everything a migration needs, nothing it doesn't.<\/h2>\n        <p>Built for one job \u2014 moving domains, HTTP to HTTPS, or swapping an old media host \u2014 and built to do it without surprises.<\/p>\n      <\/div>\n      <div class=\"features\">\n\n        <div class=\"feature\">\n          <svg class=\"gi\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M4 7c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3Z\"\/><path d=\"M4 7v10c0 1.7 3.6 3 8 3s8-1.3 8-3V7\"\/><path d=\"M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3\"\/><\/svg>\n          <div>\n            <h3>Serialized-data safe<\/h3>\n            <p>Unpacks serialized arrays and objects, replaces inside them, and recalculates string lengths so the data stays valid. This is the part naive tools get wrong.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"feature\">\n          <svg class=\"gi\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n          <div>\n            <h3>Dry run first<\/h3>\n            <p>Preview every row that would change and read the full log before a single byte is written. Nothing touches the database until you say so.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"feature\">\n          <svg class=\"gi\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\"\/><path d=\"M3 9h18\"\/><path d=\"M8 14h5\"\/><\/svg>\n          <div>\n            <h3>Choose the scope<\/h3>\n            <p>Posts, post meta, options, terms, term meta and comments \u2014 tick only what you need. GUIDs are opt-in and off by default.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"feature\">\n          <svg class=\"gi\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"m8 6-6 6 6 6\"\/><path d=\"m16 6 6 6-6 6\"\/><\/svg>\n          <div>\n            <h3>Plain text or regex<\/h3>\n            <p>Match a simple string or a regular expression. The dangerous <code>\/e<\/code> modifier is blocked and patterns are validated before they run.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"feature\">\n          <svg class=\"gi\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z\"\/><path d=\"M14 2v6h6\"\/><path d=\"M9 13h6M9 17h4\"\/><\/svg>\n          <div>\n            <h3>A full change log<\/h3>\n            <p>Every changed row is recorded and downloadable as a CSV, so you have a paper trail of exactly what the run touched.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"feature\">\n          <svg class=\"gi\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><path d=\"m6 9 3 3-3 3\"\/><path d=\"M13 15h5\"\/><\/svg>\n          <div>\n            <h3>WP-CLI &amp; batched<\/h3>\n            <p>Script big migrations from the terminal, and rest easy on large sites \u2014 rows are processed in batches to keep memory use low.<\/p>\n          <\/div>\n        <\/div>\n\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- HOW IT WORKS (a genuine sequence) -->\n  <section id=\"how\" style=\"padding-top:24px\">\n    <div class=\"wrap\">\n      <div class=\"section-head\">\n        <h2>Four steps, one of them optional to skip at your peril.<\/h2>\n      <\/div>\n      <div class=\"steps\">\n        <div class=\"step\">\n          <span class=\"n\">01<\/span>\n          <h3>Enter search &amp; replace<\/h3>\n          <p>Type the old value and the new one \u2014 a URL, a domain, any string.<\/p>\n        <\/div>\n        <div class=\"step\">\n          <span class=\"n\">02<\/span>\n          <h3>Choose the tables<\/h3>\n          <p>Select which parts of the database the run should scan.<\/p>\n        <\/div>\n        <div class=\"step\">\n          <span class=\"n\">03<\/span>\n          <h3>Run a dry run<\/h3>\n          <p>Review the log of every row that would change. No writes yet.<\/p>\n        <\/div>\n        <div class=\"step\">\n          <span class=\"n\">04<\/span>\n          <h3>Back up, then apply<\/h3>\n          <p>Tick the confirmation, run for real, and download the CSV log.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- CLI -->\n  <section class=\"cli\">\n    <div class=\"wrap\">\n      <div class=\"section-head\">\n        <h2>Or do it from the command line.<\/h2>\n        <p>The same engine, wired into WP-CLI for scripted and large-scale migrations.<\/p>\n      <\/div>\n      <div class=\"terminal\" role=\"img\" aria-label=\"Example WP-CLI command: wp plr replace with search, replace and dry flags\">\n        <span class=\"line\"><span class=\"comment\"># preview the change \u2014 nothing is written<\/span><\/span>\n        <span class=\"line\"><span class=\"prompt\">$<\/span> wp plr replace <span class=\"flag\">--search<\/span>=<span class=\"val\">\"https:\/\/old-site.com\"<\/span> <span class=\"flag\">--replace<\/span>=<span class=\"val\">\"https:\/\/new-site.io\"<\/span> <span class=\"flag\">--dry<\/span><\/span>\n        <span class=\"line\"> <\/span>\n        <span class=\"line\"><span class=\"comment\"># happy with the preview? drop --dry to apply<\/span><\/span>\n        <span class=\"line\"><span class=\"prompt\">$<\/span> wp plr replace <span class=\"flag\">--search<\/span>=<span class=\"val\">\"https:\/\/old-site.com\"<\/span> <span class=\"flag\">--replace<\/span>=<span class=\"val\">\"https:\/\/new-site.io\"<\/span><\/span>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- SAFETY -->\n  <section style=\"padding-top:56px;padding-bottom:56px\">\n    <div class=\"wrap\">\n      <div class=\"safety\">\n        <svg class=\"gi\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M12 3 4 6v6c0 5 3.4 8 8 9 4.6-1 8-4 8-9V6Z\"\/><path d=\"M12 8v5\"\/><path d=\"M12 16h.01\"\/><\/svg>\n        <div>\n          <h3>Always back up first<\/h3>\n          <p>A real run writes directly to your database and can't be undone from inside the plugin. Take a full backup and preview with a dry run before you apply. Your <code>siteurl<\/code> and <code>home<\/code> options are skipped on purpose so a replacement can't lock you out.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- FAQ -->\n  <section id=\"faq\" style=\"padding-top:24px\">\n    <div class=\"wrap\">\n      <div class=\"section-head\">\n        <h2>Questions, answered.<\/h2>\n      <\/div>\n      <div class=\"faq\">\n        <details open>\n          <summary>Does it really handle serialized data? <span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary>\n          <div class=\"answer\">Yes. Serialized arrays and objects are unpacked, edited, and repacked, and the string-length prefixes (the <code>s:20:<\/code> part) are recalculated so the stored value stays valid and unserializable.<\/div>\n        <\/details>\n        <details>\n          <summary>Can I undo a replacement? <span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary>\n          <div class=\"answer\">Not from the plugin \u2014 it writes straight to the database. Keep a backup and always preview with a dry run before applying. That is what the dry run and the CSV log are there for.<\/div>\n        <\/details>\n        <details>\n          <summary>Will it change my site address? <span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary>\n          <div class=\"answer\">No. The <code>siteurl<\/code> and <code>home<\/code> options are deliberately skipped so a run can't lock you out of wp-admin. Change those from Settings \u2192 General.<\/div>\n        <\/details>\n        <details>\n          <summary>Can I use a regular expression? <span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary>\n          <div class=\"answer\">Yes. Turn on the regex option to treat the search value as a pattern. Patterns are validated first, and the code-executing <code>\/e<\/code> modifier is refused.<\/div>\n        <\/details>\n        <details>\n          <summary>What does it cost? <span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary>\n          <div class=\"answer\">Nothing. It's free and open source under the GPL, with no premium tier, no feature gates and no upsells. Building your site well is our business \u2014 this tool is part of it.<\/div>\n        <\/details>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- FINAL CTA -->\n  <section class=\"final\" style=\"padding-top:40px\">\n    <div class=\"wrap\">\n      <h2>Ready to move your links, safely?<\/h2>\n      <p>Install Ethereal Link Replacer, run a dry run, and see exactly what will change before it changes.<\/p>\n      <a class=\"btn btn-primary btn-lg\" href=\"https:\/\/wordpress.org\/plugins\/ethereal-link-replacer\/\">Get it on WordPress.org<\/a>\n    <\/div>\n  <\/section>\n<\/main>\n\n<footer>\n  <div class=\"wrap foot\">\n    <div class=\"who\">\n      <span class=\"brand\" aria-label=\"Ethereal Web Solution\"><span class=\"logo\"><\/span><\/span>\n      <p>Ethereal Link Replacer is a free, open-source WordPress plugin built by <strong>Manuel Zela<\/strong> at Ethereal Web Solution. We design, build and maintain WordPress sites \u2014 this is one of the tools we use every day.<\/p>\n    <\/div>\n    <div class=\"cols\">\n      <div class=\"col\">\n        <div class=\"ttl\">Plugin<\/div>\n        <a href=\"https:\/\/wordpress.org\/plugins\/ethereal-link-replacer\/\">WordPress.org listing<\/a>\n        <a href=\"https:\/\/wordpress.org\/support\/plugin\/ethereal-link-replacer\/\">Support forum<\/a>\n        <a href=\"#how\">How it works<\/a>\n        <a href=\"#faq\">FAQ<\/a>\n      <\/div>\n      <div class=\"col\">\n        <div class=\"ttl\">Ethereal Web Solution<\/div>\n        <a href=\"https:\/\/etherealwebsolution.com\/\">Home<\/a>\n        <a href=\"https:\/\/etherealwebsolution.com\/contact\/\">Contact<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"wrap legal\">\n    \u00a9 <span id=\"year\">2026<\/span> Ethereal Web Solution \u00b7 Manuel Zela \u00b7 Released under the GPL v2 or later.\n  <\/div>\n<\/footer>\n\n<script>\n  \/\/ One deliberate load moment: reveal the \"after\" lines once.\n  (function () {\n    var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    var nodes = document.querySelectorAll('[data-reveal]');\n    if (reduce) { nodes.forEach(function (n) { n.classList.add('in'); }); return; }\n    window.addEventListener('load', function () {\n      nodes.forEach(function (n, i) {\n        setTimeout(function () { n.classList.add('in'); }, 350 + i * 260);\n      });\n    });\n  })();\n\n  \/\/ Current year.\n  document.getElementById('year').textContent = new Date().getFullYear();\n<\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Ethereal Link Replacer \u2014 safe search &amp; replace for WordPress | Ethereal Web Solution Features How it works FAQ Get it free WordPress plugin \u00b7 Free &amp; open source Search and replace across WordPress, without corrupting serialized data. Ethereal Link Replacer rewrites links, URLs and text everywhere they live \u2014 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-4702","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Ethereal Link Replacer \u2014 safe search &amp; replace for WordPress | Ethereal Web Solution Features How it works FAQ Get it free WordPress plugin \u00b7 Free &amp; open source Search and replace across WordPress, without corrupting serialized data. Ethereal Link Replacer rewrites links, URLs and text everywhere they live \u2014 posts, options, meta, terms and\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Ethereal Web Solution \u00bb Web Design\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Ethereal link replacer \u00bb Ethereal Web Solution\" \/>\n\t\t<meta property=\"og:description\" content=\"Ethereal Link Replacer \u2014 safe search &amp; replace for WordPress | Ethereal Web Solution Features How it works FAQ Get it free WordPress plugin \u00b7 Free &amp; open source Search and replace across WordPress, without corrupting serialized data. Ethereal Link Replacer rewrites links, URLs and text everywhere they live \u2014 posts, options, meta, terms and\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/etherealwebsolution.com\/wp-content\/uploads\/2024\/10\/Untitled-design-1-e1728285592957.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/etherealwebsolution.com\/wp-content\/uploads\/2024\/10\/Untitled-design-1-e1728285592957.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"396\" \/>\n\t\t<meta property=\"og:image:height\" content=\"95\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-07T13:22:37+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-11T08:52:32+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Ethereal link replacer \u00bb Ethereal Web Solution\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Ethereal Link Replacer \u2014 safe search &amp; replace for WordPress | Ethereal Web Solution Features How it works FAQ Get it free WordPress plugin \u00b7 Free &amp; open source Search and replace across WordPress, without corrupting serialized data. Ethereal Link Replacer rewrites links, URLs and text everywhere they live \u2014 posts, options, meta, terms and\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/etherealwebsolution.com\/wp-content\/uploads\/2024\/10\/Untitled-design-1-e1728285592957.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/ethereal-link-replacer\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/ethereal-link-replacer\\\/#listItem\",\"name\":\"Ethereal link replacer\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/ethereal-link-replacer\\\/#listItem\",\"position\":2,\"name\":\"Ethereal link replacer\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/#organization\",\"name\":\"Ethereal Web Solution\",\"description\":\"We're Ethereal Web Solution, your dedicated partner in building stunning websites and establishing a powerful online presence.\",\"url\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/\",\"email\":\"info@etherealwebsolution.com\",\"telephone\":\"+447450520386\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":10,\"maxValue\":50},\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/etherealwebsolution.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/Untitled-design-1-e1728285592957.png\",\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/ethereal-link-replacer\\\/#organizationLogo\",\"width\":396,\"height\":95},\"image\":{\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/ethereal-link-replacer\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/ethereal_web_solution\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@etherealwebsolution\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/ethereal-web-solution\\\/\",\"https:\\\/\\\/etherealwebsolution.com\\\/\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/ethereal-link-replacer\\\/#webpage\",\"url\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/ethereal-link-replacer\\\/\",\"name\":\"Ethereal link replacer \\u00bb Ethereal Web Solution\",\"description\":\"Ethereal Link Replacer \\u2014 safe search & replace for WordPress | Ethereal Web Solution Features How it works FAQ Get it free WordPress plugin \\u00b7 Free & open source Search and replace across WordPress, without corrupting serialized data. Ethereal Link Replacer rewrites links, URLs and text everywhere they live \\u2014 posts, options, meta, terms and\",\"inLanguage\":\"sq\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/ethereal-link-replacer\\\/#breadcrumblist\"},\"datePublished\":\"2026-09-07T13:22:37+00:00\",\"dateModified\":\"2026-09-11T08:52:32+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/#website\",\"url\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/\",\"name\":\"Ethereal Web Solution\",\"alternateName\":\"Ethereal Web Solution\",\"description\":\"Web Design\",\"inLanguage\":\"sq\",\"publisher\":{\"@id\":\"https:\\\/\\\/etherealwebsolution.com\\\/sq\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Ethereal link replacer \u00bb Ethereal Web Solution","description":"Ethereal Link Replacer \u2014 safe search & replace for WordPress | Ethereal Web Solution Features How it works FAQ Get it free WordPress plugin \u00b7 Free & open source Search and replace across WordPress, without corrupting serialized data. Ethereal Link Replacer rewrites links, URLs and text everywhere they live \u2014 posts, options, meta, terms and","canonical_url":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/etherealwebsolution.com\/sq#listItem","position":1,"name":"Home","item":"https:\/\/etherealwebsolution.com\/sq","nextItem":{"@type":"ListItem","@id":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/#listItem","name":"Ethereal link replacer"}},{"@type":"ListItem","@id":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/#listItem","position":2,"name":"Ethereal link replacer","previousItem":{"@type":"ListItem","@id":"https:\/\/etherealwebsolution.com\/sq#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/etherealwebsolution.com\/sq\/#organization","name":"Ethereal Web Solution","description":"We're Ethereal Web Solution, your dedicated partner in building stunning websites and establishing a powerful online presence.","url":"https:\/\/etherealwebsolution.com\/sq\/","email":"info@etherealwebsolution.com","telephone":"+447450520386","numberOfEmployees":{"@type":"QuantitativeValue","minValue":10,"maxValue":50},"logo":{"@type":"ImageObject","url":"https:\/\/etherealwebsolution.com\/wp-content\/uploads\/2024\/10\/Untitled-design-1-e1728285592957.png","@id":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/#organizationLogo","width":396,"height":95},"image":{"@id":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/#organizationLogo"},"sameAs":["https:\/\/www.instagram.com\/ethereal_web_solution\/","https:\/\/www.tiktok.com\/@etherealwebsolution","https:\/\/www.linkedin.com\/company\/ethereal-web-solution\/","https:\/\/etherealwebsolution.com\/"]},{"@type":"WebPage","@id":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/#webpage","url":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/","name":"Ethereal link replacer \u00bb Ethereal Web Solution","description":"Ethereal Link Replacer \u2014 safe search & replace for WordPress | Ethereal Web Solution Features How it works FAQ Get it free WordPress plugin \u00b7 Free & open source Search and replace across WordPress, without corrupting serialized data. Ethereal Link Replacer rewrites links, URLs and text everywhere they live \u2014 posts, options, meta, terms and","inLanguage":"sq","isPartOf":{"@id":"https:\/\/etherealwebsolution.com\/sq\/#website"},"breadcrumb":{"@id":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/#breadcrumblist"},"datePublished":"2026-09-07T13:22:37+00:00","dateModified":"2026-09-11T08:52:32+00:00"},{"@type":"WebSite","@id":"https:\/\/etherealwebsolution.com\/sq\/#website","url":"https:\/\/etherealwebsolution.com\/sq\/","name":"Ethereal Web Solution","alternateName":"Ethereal Web Solution","description":"Web Design","inLanguage":"sq","publisher":{"@id":"https:\/\/etherealwebsolution.com\/sq\/#organization"}}]},"og:locale":"sq_AL","og:site_name":"Ethereal Web Solution \u00bb Web Design","og:type":"article","og:title":"Ethereal link replacer \u00bb Ethereal Web Solution","og:description":"Ethereal Link Replacer \u2014 safe search &amp; replace for WordPress | Ethereal Web Solution Features How it works FAQ Get it free WordPress plugin \u00b7 Free &amp; open source Search and replace across WordPress, without corrupting serialized data. Ethereal Link Replacer rewrites links, URLs and text everywhere they live \u2014 posts, options, meta, terms and","og:url":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/","og:image":"https:\/\/etherealwebsolution.com\/wp-content\/uploads\/2024\/10\/Untitled-design-1-e1728285592957.png","og:image:secure_url":"https:\/\/etherealwebsolution.com\/wp-content\/uploads\/2024\/10\/Untitled-design-1-e1728285592957.png","og:image:width":396,"og:image:height":95,"article:published_time":"2026-09-07T13:22:37+00:00","article:modified_time":"2026-09-11T08:52:32+00:00","twitter:card":"summary_large_image","twitter:title":"Ethereal link replacer \u00bb Ethereal Web Solution","twitter:description":"Ethereal Link Replacer \u2014 safe search &amp; replace for WordPress | Ethereal Web Solution Features How it works FAQ Get it free WordPress plugin \u00b7 Free &amp; open source Search and replace across WordPress, without corrupting serialized data. Ethereal Link Replacer rewrites links, URLs and text everywhere they live \u2014 posts, options, meta, terms and","twitter:image":"https:\/\/etherealwebsolution.com\/wp-content\/uploads\/2024\/10\/Untitled-design-1-e1728285592957.png"},"aioseo_meta_data":{"post_id":"4702","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-09-07 13:22:37","updated":"2026-09-11 13:14:27","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/etherealwebsolution.com\/sq\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tEthereal link replacer\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/etherealwebsolution.com\/sq"},{"label":"Ethereal link replacer","link":"https:\/\/etherealwebsolution.com\/sq\/ethereal-link-replacer\/"}],"_links":{"self":[{"href":"https:\/\/etherealwebsolution.com\/sq\/wp-json\/wp\/v2\/pages\/4702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/etherealwebsolution.com\/sq\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/etherealwebsolution.com\/sq\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/etherealwebsolution.com\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/etherealwebsolution.com\/sq\/wp-json\/wp\/v2\/comments?post=4702"}],"version-history":[{"count":13,"href":"https:\/\/etherealwebsolution.com\/sq\/wp-json\/wp\/v2\/pages\/4702\/revisions"}],"predecessor-version":[{"id":4900,"href":"https:\/\/etherealwebsolution.com\/sq\/wp-json\/wp\/v2\/pages\/4702\/revisions\/4900"}],"wp:attachment":[{"href":"https:\/\/etherealwebsolution.com\/sq\/wp-json\/wp\/v2\/media?parent=4702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}