How to Change the Blogger Permalink Format to Like Wordpress URLs

How to Change the Blogger Permalink Format to Like Wordpress URLs
How to Change the Blogger Permalink Format to Like Wordpress URLs

Changing Blogger/Blogspot Permalinks Like WordPress URLs - There are differences in permalinks between these two platforms, especially in post or blog page permalinks. Where blogs created using Blogger have permalinks or URLs with year, month and end formats with the extension .html.

Meanwhile, WordPress has permalinks that only contain text without any other format, that's because WordPress has a custom permalink feature that can be changed according to the desired permalink format. In contrast to Blogger, which does not yet have a custom permalink option provided.

Permalinks that only contain text with a format like WordPress are simpler and more pleasing to the eye than long permalinks with the addition of year and month formats. Then is it possible to remove the year and month format in blogger urls?

Even though Blogger doesn't have a custom custom link option, you can still change the Blogger permalink to be like the WordPress permalink, by using a URL redirect using JavaScript. Permalink or Permanent Link, commonly called URL, stands for Uniform Resource Locator, which is the address of a post from a website or that leads to a page, a file that you often encounter on the internet.

For example, the Permalink/URL provided by Blogger has the following format, domain(dot)com/YYYY/MM/judul-postingan.htmlwhile the Permalink Permalink/WordPress URL is as followsdomain(dot)com/judul-postingan



Before following this tutorial, it's a good idea to backup your Blogger template first just in case an error occurs. If you have the following tutorial:

Step #1 : Open your Blogger Account dashboard
Step #2 : Go to Themes > Edit HTML
Step #3 : Then look for the opening code <head> then copy the code below just below the <head> code .
<script type='text/javascript'>
  // BloggerJS v0.4.0
  // Licensed under the MIT License
  // Copyright (c) 2017-2018 Kenny Cruz
  // Setting
  var config = {
  // Allow dates in ticket URLs.
    postsDatePrefix: false,
  // short URL just to enter the site,
  // but not in its general operation.
    accessOnly: false,
   // Usar API v3 de Blogger.
    useApiV3: false,
    apiKey: "BLOGGER-API-V3"
  var postsOrPages = ["pages", "posts"],
      blogId = "<data:blog.blogId/>",
      urlTotal, fetchIndex = 1,
      ampChar = "&amp;"[0],
      secondRequest = true,
      feedPriority = 0,
  // urlSelect();
  // Validate if the URL corresponds to a post / page, 
  // if not, or if it corresponds to the index.
  function urlVal() {
    var url = window.location.pathname;
    var length = url.length;
    var urlEnd = url.substring(length - 5);
    if (urlEnd === ".html") return 0;
    else if (length > 1) return 1;
    else return 2;
  // urlMod (); 
  // Modify the URL by removing the date or the "/ p /" as well as the ".html".
  function urlMod() {
    var url = window.location.pathname;
    if (url.substring(1, 2) === "p") {
      url = url.substring(url.indexOf("/",1) + 1);
      url = url.substr(0, url.indexOf(".html"));
      history.replaceState(null, null, "../" + url);
    } else {
      if (!config.postsDatePrefix) url = url.substring(url.indexOf("/",7) + 1);
      else url = url.substring(1);
      url = url.substr(0, url.indexOf(".html"));
      history.replaceState(null, null, "../../" + url);
  // urlSearch (url, database);
  // Look for a specific url in the database, if found,
  // then it will direct to her.
  function urlSearch(url, database) {
    var pathname = url + ".html";
    database.forEach(function(element) {
      var search =;
      if (search !== -1) window.location = element;
  // urlManager (database, id);
  // Run a URL validation, to determine with the result
  // the action to perform (modify it or find it in the blog feed).
  function urlManager() {
    var validation = urlVal();
    if (validation === 0) {
      if (!config.accessOnly) urlMod();
    } else if (validation === 1) {
      fetchData(postsOrPages[feedPriority], 1);
    } else if (validation === 2) {
      if (!config.accessOnly) history.replaceState(null, null, "/");
  // fetchData ();
  // Make a request for blog data.
  function fetchData(postsOrPages, index) {
    var script = document.createElement("script");
    if (config.useApiV3) {
      var jsonUrl = "" + blogId + "/" + postsOrPages +
                    "?key=" + config.apiKey + "#maxResults=500#fields=nextPageToken%2Citems(url)#callback=parseData";
      if (nextPageToken) jsonUrl += "#pageToken=" + nextPageToken;
      nextPageToken = undefined;
    } else {
      var jsonUrl = window.location.protocol + "//" + window.location.hostname + "/feeds/" + postsOrPages +
                    "/summary?start-index=" + index + "#max-results=150#orderby=published#alt=json-in-script#callback=parseData";
    jsonUrl = jsonUrl.replace(/#/g, ampChar);
    script.type = "text/javascript";
    script.src = jsonUrl;
  // parseData ();
  // Get data in JSON format, classify it
  // and send them to compare the current URL.
  function parseData(json) {
    var database = [];
    if (!config.useApiV3) {
      if (!urlTotal) {
        urlTotal = parseInt(json.feed.openSearch$totalResults.$t);
      try {
        json.feed.entry.forEach(function(element, index) {
          var entry = json.feed.entry[index];
, index) {
            if ([index].rel === "alternate") database.push([index].href);
      } catch(e) {}
    } else {
      try {
        json.items.forEach(function(element, index) {
      } catch(e) {}
      nextPageToken = json.nextPageToken;
    urlSearch(window.location.pathname, database);
    if (urlTotal > 150) {
      fetchIndex += 150;
      urlTotal -= 150;
      fetchData(postsOrPages[feedPriority], fetchIndex);
    } else if (nextPageToken) {
    } else if(secondRequest) {
      nextPageToken = undefined;
      urlTotal = 0;
      fetchIndex = 1;
      secondRequest = false;
      if (feedPriority === 0) {
        feedPriority = 1;
        fetchData("posts", 1);
      } else if(feedPriority === 1) {
        feedPriority = 0;
        fetchData("pages", 1);
  // bloggerJS ();
  // Start BloggerJS.
  // You can receive as a parameter the search order for the URLs,
  // that is, if it will start to compare against pages or posts.
  // 0 or empty = Pages, 1 = Entries.
  function bloggerJS(priority) {
    if (priority) feedPriority = priority;
Example placement as the code below. Then Save Template if you have.
  <!-- Paste Code Disini -->
The script above is to delete the blogger post format /YYYY/MMand page /p/and extension .htmlat the end of the post. So when opened later it will look like a wordpress permalink.

I got this tutorial from the Jokenox account on github, for complete documentation you can check directly on github.


That was how to change the Blogger Post permalink to be like the WordPress permalink , I hope this article is useful and helpful.

It should also be noted, according to several articles that I have read, deleting the blogger permalink format for blogs that are old enough or have articles that have been indexed on Google will reduce the quality of SEO, so it's best if this tutorial is only used for blogs that are new or don't have several indexed articles.

Post a Comment

Welcome to Jehangir Khan's Tech Blog! We're thrilled to have you join the conversation. Your comments and feedback are valuable to us and help us create a community of tech enthusiasts who share ideas and insights. We encourage you to share your thoughts related to the post and engage in a respectful and meaningful conversation with others. Please refrain from spamming or promoting your own content in the comments section. We also ask that you avoid using inappropriate language or attacking others. Please note that all comments will be reviewed before they are posted, and we reserve the right to remove any comments that violate our policies. Let's explore the world of technology together and inspire each other to achieve our goals!

Previous Post Next Post