hreflang tag คือแท็กที่บอก Google ว่าหน้าเว็บหน้านี้มีเวอร์ชันภาษาอื่นหรือประเทศอื่นอยู่ที่ URL ไหนบ้าง เขียนในรูป `<link rel="alternate" hreflang="x" href="..." />` วางไว้ใน `<head>` ของหน้า เพื่อให้ Google เลือกแสดงเวอร์ชันที่ตรงกับภาษาและประเทศของผู้ค้นหาในหน้าผลการค้นหา ใช้เมื่อเว็บของคุณมีเนื้อหาเดียวกันหลายภาษาหรือหลายประเทศจริงๆ เช่น เว็บที่มีทั้งหน้าไทยและหน้าอังกฤษ หรือธุรกิจที่ขยายไปขายต่างประเทศ ส่วนเว็บไทยทั่วไปที่มีภาษาเดียวไม่จำเป็นต้องใส่เลย

หลายคนเข้าใจผิดว่า hreflang คือตัวช่วยดันอันดับ ความจริงมันไม่ใช่ปัจจัยจัดอันดับโดยตรง แต่มันแก้ปัญหาที่กวนใจเว็บหลายภาษามากๆ คือ Google สับสนว่าหน้าไหนคือหน้าหลัก แล้วส่งคนไทยไปหน้าอังกฤษ หรือมองว่าหน้าแปลเป็นเนื้อหาซ้ำกัน บทความนี้จะพาไล่ตั้งแต่หลักการทำงาน วิธีติดตั้งทั้งสามแบบ ตารางเทียบว่าควรเลือกแบบไหน ข้อผิดพลาดที่ทำให้ Google เมินแท็กทั้งชุด ไปจนถึงเช็กลิสต์ตรวจก่อนปล่อยขึ้นจริง

hreflang tag คืออะไร และทำงานอย่างไร

hreflang tag คือคำอธิบายประกอบ (annotation) ที่ติดไว้กับหน้าเว็บ เพื่อบอกเครื่องมือค้นหาว่า "หน้านี้ยังมีเวอร์ชันภาษาหรือประเทศอื่นอยู่ที่ URL เหล่านี้" รูปแบบมาตรฐานคือ `<link rel="alternate" hreflang="th" href="https://example.com/th/page" />` โดยคำว่า alternate หมายถึง URL ที่ระบุไว้คือเวอร์ชันทางเลือกของหน้าปัจจุบัน ไม่ใช่หน้าใหม่ที่ไม่เกี่ยวกัน

พูดง่ายๆ คือมันคือการวาดแผนที่ให้ Google ดูว่าหน้าเดียวกันในเว็บของคุณกระจายอยู่กี่เวอร์ชัน เมื่อ Google เข้าใจแผนที่นี้ มันจะเลือกหยิบเวอร์ชันที่เหมาะกับผู้ค้นหาแต่ละคนมาแสดงในผลการค้นหา เช่น คนที่ตั้งค่าภาษาไทยและค้นจากประเทศไทยควรได้หน้าไทย ส่วนคนที่ค้นจากสหรัฐฯ ควรได้หน้าอังกฤษเวอร์ชัน US

จุดที่ต้องเข้าใจให้ตรงกันตั้งแต่แรกคือ hreflang ไม่ได้บังคับให้เบราว์เซอร์เด้งผู้ใช้ไปหน้าภาษาที่ตรงโดยอัตโนมัติ มันเป็นแค่สัญญาณให้เครื่องมือค้นหาใช้ตัดสินใจตอนแสดงผลเท่านั้น การ redirect ผู้ใช้ตาม IP หรือภาษาเบราว์เซอร์เป็นคนละเรื่องที่เว็บทำเองต่างหาก และ Google เตือนว่าไม่ควร force redirect ตาม IP หรือภาษาเบราว์เซอร์ เพราะจะบล็อก Googlebot ไม่ให้เข้าไปเก็บข้อมูลครบทุกเวอร์ชัน

  • `hreflang` = โค้ดภาษา (และประเทศถ้ามี) ของหน้าปลายทาง
  • `href` = URL เต็มของเวอร์ชันนั้น ต้องมี https:// และชื่อโดเมนครบ
  • วางไว้ใน `<head>` ของทุกหน้าในชุดที่เชื่อมกัน
  • ใช้กับหน้าที่เป็น "เนื้อหาเดียวกันแต่คนละภาษา/คนละตลาด" ไม่ใช่หน้าที่เนื้อหาต่างกันคนละเรื่อง

ทำไม SEO ต้องสนใจ hreflang

เหตุผลหลักคือ hreflang ช่วยให้ Google พาผู้ใช้ไปหน้าที่ใช่ และลดปัญหาเนื้อหาซ้ำข้ามภาษา ไม่ใช่เพื่อดันอันดับโดยตรง Google ระบุชัดว่า hreflang ไม่ใช่ปัจจัยจัดอันดับ (ranking factor) แต่เป็นสัญญาณที่ใช้ตอนเลือกว่าจะแสดงเวอร์ชันไหนใน SERP

ลองนึกภาพเว็บบริษัทที่มีหน้าเดียวกันสองภาษา คือหน้าไทยกับหน้าอังกฤษ ถ้าไม่มี hreflang Google อาจเลือกหน้าอังกฤษไปโชว์ให้คนไทยที่ค้นด้วยคำไทย ผลคือคนกดเข้ามาแล้วอ่านไม่รู้เรื่อง กดออกทันที แม้อันดับจะเท่าเดิม แต่ประสบการณ์ผู้ใช้และโอกาสปิดการขายพังไปแล้ว

อีกปัญหาคือหน้าแปลที่มีโครงเหมือนกัน ชื่อสินค้าเหมือนกัน อาจถูกมองว่าใกล้เคียงกับเนื้อหาซ้ำ ซึ่งเป็นคนละเรื่องกับการถูกลงโทษ แต่ทำให้ Google สับสนว่าควรจัดทำดัชนีหน้าไหน ในกรณีนี้ hreflang ทำงานร่วมกับ canonical tag ได้ดี คือ canonical จัดการเวอร์ชันซ้ำภายในภาษาเดียวกัน ส่วน hreflang บอกความสัมพันธ์ข้ามภาษา ถ้าอยากเข้าใจภาพรวมเรื่องนี้ลึกขึ้น อ่านต่อได้ที่บทความ เนื้อหาซ้ำ (duplicate content)

  • ช่วยให้ SERP แสดงเวอร์ชันที่ตรงภาษา/ประเทศของผู้ค้นหา
  • ลดความสับสนของ Google เรื่องเนื้อหาซ้ำข้ามภาษา
  • ลด bounce จากคนกดเข้าหน้าที่อ่านไม่ออก
  • ทำให้ทีมวัดผลแยกทราฟฟิกรายตลาดได้ชัดขึ้น

ติดตั้ง hreflang ได้กี่วิธี ต่างกันอย่างไร

ติดตั้งได้ 3 วิธี คือใส่เป็น HTML `<link>` ใน head, ส่งผ่าน HTTP header และประกาศใน XML sitemap ทั้งสามวิธีมีผลเท่ากันในสายตา Google ต่างกันที่ความสะดวกในการดูแลและชนิดไฟล์ที่รองรับ

หลักสำคัญคือเลือกวิธีเดียวแล้วใช้ให้สม่ำเสมอทั้งเว็บ ห้ามผสมหลายวิธีในเว็บเดียวกัน เพราะเวลาเกิดปัญหาจะตรวจสอบยากมาก และมีโอกาสที่ประกาศจากคนละแหล่งจะขัดกันเองจนเกิด error

มิติเปรียบเทียบHTML link ใน headHTTP headerXML sitemap
เหมาะกับเว็บทั่วไป จำนวนภาษาไม่มากไฟล์ที่ไม่ใช่ HTML เช่น PDFเว็บใหญ่ หลายภาษามาก
ตรวจสอบง่ายแค่ไหนง่ายที่สุด ดูจาก view source ได้ยาก ต้องดู response headerปานกลาง เปิดไฟล์ sitemap ดู
ผลต่อน้ำหนักหน้าเพิ่มขึ้นตามจำนวนภาษาไม่มีผลต่อหน้า HTMLไม่มีผลต่อหน้า HTML
ใครต้องแก้ทีมเว็บ/เทมเพลตทีมเซิร์ฟเวอร์หรือ CDNระบบ generate sitemap
ข้อควรระวังลืมใส่บางหน้าได้ง่ายทีมคอนเทนต์มองไม่เห็นไฟล์ใหญ่ ต้องอัปเดตอัตโนมัติ

วิธีที่ 1: HTML link ใน head ของแต่ละหน้า

เป็นวิธีที่นิยมและตรงไปตรงมาที่สุด แค่ใส่แท็ก `<link rel="alternate" hreflang="..." href="..." />` ครบทุกเวอร์ชันไว้ใน `<head>` ของทุกหน้าในชุดนั้น ข้อดีคือดูด้วยตาเปล่าได้ทันทีจาก view source และเครื่องมือตรวจส่วนใหญ่อ่านเจอ

ข้อเสียคือถ้าเว็บมีหลายภาษามากๆ แท็กจะยาวและทำให้หน้าหนักขึ้นเล็กน้อย เพราะทุกหน้าต้องประกาศครบทุกเวอร์ชันรวมถึงตัวเอง ถ้าเว็บของคุณเป็น React หรือ Next.js ที่ render ฝั่ง client ต้องมั่นใจว่าแท็กนี้ออกมาใน HTML ที่บอทเห็นจริง ซึ่งเป็นประเด็นเดียวกับที่อธิบายไว้ในบทความ JavaScript SEO

วิธีที่ 2: HTTP header

ใช้ส่งค่าผ่าน response header ในรูป `Link: <https://example.com/en/file.pdf>; rel="alternate"; hreflang="en"` วิธีนี้เหมาะกับไฟล์ที่ไม่ใช่ HTML เช่น PDF ซึ่งไม่มี `<head>` ให้ใส่แท็ก

ข้อจำกัดคือต้องแก้ที่ระดับเซิร์ฟเวอร์หรือ CDN ทีมคอนเทนต์มองไม่เห็นและตรวจยากกว่าสองวิธีที่เหลือ จึงมักใช้เฉพาะกับไฟล์ดาวน์โหลด ไม่ได้ใช้เป็นวิธีหลักของทั้งเว็บ

วิธีที่ 3: ประกาศใน XML sitemap

ใส่ `<xhtml:link>` ไว้ในแต่ละ `<url>` ของ sitemap เพื่อระบุเวอร์ชันทางเลือกทั้งหมด ข้อดีคือไม่เพิ่มน้ำหนักหน้าเว็บเลย และจัดการรวมศูนย์ที่ไฟล์เดียว เหมาะกับเว็บใหญ่ที่มีหลายสิบภาษา

ข้อเสียคือไฟล์ sitemap จะใหญ่ขึ้นมาก และต้องมีระบบ generate อัตโนมัติ ไม่งั้นคนดูแลจะตามไม่ไหว ใครยังไม่แน่ใจว่า sitemap ทำหน้าที่อะไรบ้าง ควรศึกษาโครงสร้าง sitemap ให้เข้าใจก่อนเริ่มใส่ hreflang ด้วยวิธีนี้

x-default คืออะไร ต้องใส่ไหม

x-default คือค่าพิเศษที่ใช้กำหนดหน้า fallback สำหรับผู้ใช้ที่ภาษาหรือประเทศไม่ตรงกับเวอร์ชันไหนที่คุณระบุไว้เลย เขียนเป็น `<link rel="alternate" hreflang="x-default" href="https://example.com/" />` ไม่บังคับต้องใส่ แต่แนะนำสำหรับเว็บที่ให้บริการหลายประเทศ

หน้าที่เหมาะจะเป็น x-default มักเป็นหน้าเลือกภาษา หรือเวอร์ชันสากล (เช่นหน้าอังกฤษกลางที่ไม่ผูกกับประเทศใด) ตัวอย่างเช่น ถ้าเว็บของคุณมีเฉพาะเวอร์ชันไทยกับอังกฤษ-สหรัฐฯ แล้วมีคนจากเยอรมนีค้นเจอ Google จะใช้ x-default เป็นตัวเลือกที่ปลอดภัยที่สุดในการแสดงผล

ย้ำอีกครั้งว่า x-default เป็นแค่สัญญาณบอก Google ไม่ใช่การ redirect อัตโนมัติ ผู้ใช้ที่กด URL ตรงๆ จะยังเข้าหน้าที่เขากดเสมอ การใส่ x-default ไม่ได้บังคับ แต่แนะนำให้ใส่ในเว็บที่ให้บริการหลายประเทศ เพราะช่วยครอบคลุมกลุ่มคนที่ไม่เข้าเงื่อนไขไหนเลย

เขียนโค้ดภาษาและประเทศให้ถูกต้องอย่างไร

ใช้รหัสภาษาตามมาตรฐาน ISO 639-1 (เช่น `th`, `en`) และถ้าต้องระบุประเทศให้ใช้ ISO 3166-1 Alpha-2 (เช่น `TH`, `US`) hreflang ไม่สนใจว่าตัวอักษรจะพิมพ์เล็กหรือใหญ่ แต่ควรเลือกรูปแบบเดียวแล้วใช้ให้เหมือนกันทั้งเว็บเพื่อไม่ให้ทีมสับสน โดย คั่นด้วยขีดกลาง `-` เท่านั้น ห้ามใช้ underscore `_` เด็ดขาด เช่นเขียน `en-us` ไม่ใช่ `en_us`

จุดที่คนพลาดบ่อยคือใส่รหัสประเทศไปเป็นรหัสภาษา เช่นอยากได้เวอร์ชันสหราชอาณาจักรแล้วเขียน `hreflang="uk"` ซึ่งความจริง `uk` คือรหัสภาษายูเครน ที่ถูกต้องคือ `en-gb` อีกกรณีคือคิดว่ามีรหัสภาษา "อาเซียน" หรือ "เอเชีย" ซึ่งไม่มีในมาตรฐาน

ระบุแค่ภาษาอย่างเดียวได้ (เช่น `th`) แปลว่าเวอร์ชันนี้สำหรับคนที่ใช้ภาษาไทยไม่ว่าจะอยู่ประเทศไหน แต่ถ้าจะระบุประเทศ ต้องมีภาษานำหน้าเสมอ จะเขียน `hreflang="th"` ได้ แต่เขียน `hreflang="TH"` โดดๆ เพื่อหมายถึงประเทศไทยไม่ได้

  • `th` = ภาษาไทย ทุกประเทศ
  • `en` = ภาษาอังกฤษ ทุกประเทศ
  • `en-us` = ภาษาอังกฤษ สำหรับผู้ใช้ในสหรัฐอเมริกา
  • `th-th` = ภาษาไทย สำหรับผู้ใช้ในประเทศไทย
  • `x-default` = หน้า fallback สำหรับคนที่ไม่ตรงเงื่อนไขใดเลย

ข้อผิดพลาด hreflang ที่พบบ่อยที่สุดคืออะไร

ข้อผิดพลาดที่เจอบ่อยที่สุดคือลืม self-referencing กับ return link แบบสองทาง ซึ่งสองข้อนี้ทำให้ Google เมิน hreflang annotation ทั้งชุดของหน้านั้น ไม่ใช่แค่แท็กที่ผิดตัวเดียว

ที่ต้องเน้นให้ชัดคือ ผลของการทำผิดคือ Google "เมิน" ไม่ใช่ "ลงโทษ" เว็บที่ใส่ hreflang ผิดจะไม่ถูกแบนหรือโดน penalty อะไรทั้งนั้น มันแค่เท่ากับคุณไม่ได้ใส่ตั้งแต่แรก แล้ว Google กลับไปเดาเองว่าควรแสดงหน้าไหน — ใครขู่ว่าใส่ผิดแล้วเว็บพังนั้นเข้าใจผิด

ลองไล่เช็กตามรายการนี้ก่อนปล่อยขึ้นจริง เพราะเคสส่วนใหญ่ที่เจอมักติดอยู่ในข้อใดข้อหนึ่งต่อไปนี้

  • ไม่มี self-referencing tag — แต่ละหน้าต้องประกาศ hreflang ที่ชี้กลับมาหาตัวเองด้วยเสมอ
  • ไม่มี return link สองทาง — ถ้าหน้า A ชี้ไป B ตัว B ต้องชี้กลับมาหา A ด้วย ไม่งั้นทั้งชุดถูกเมิน
  • รหัสภาษา/ประเทศผิดหรือพิมพ์ผิด เช่นใช้ `uk` แทน `en-gb` หรือใช้ `_` แทน `-`
  • URL ใน hreflang ต้องตอบ HTTP 200 เท่านั้น ถ้าเป็น redirect, 404 หรือ 500 Google จะไม่นับ annotation ตัวนั้น และอาจกระทบทั้งชุดถ้าทำให้ return link ขาด
  • ใช้ URL แบบ relative path เช่น `/en/page` แทนที่จะเป็น URL เต็มพร้อม https:// และโดเมน
  • ผสมหลายวิธีติดตั้งในเว็บเดียวกันจนประกาศไม่สอดคล้องกัน
  • ใส่ canonical ข้ามภาษา — แต่ละเวอร์ชันต้อง canonical ชี้หาตัวเอง ถ้าหน้าอังกฤษใส่ canonical ชี้กลับไปหน้าไทย จะขัดกับ hreflang จนใช้งานไม่ได้

เว็บไทยภาษาเดียวต้องใส่ hreflang ไหม

ไม่จำเป็นต้องใส่ ถ้าเว็บของคุณมีภาษาเดียว ประเทศเดียว และไม่มีเวอร์ชันแปลอยู่เลย hreflang ไม่ได้ช่วยอะไร เพราะไม่มีเวอร์ชันทางเลือกให้ Google เลือกตั้งแต่แรก

การใส่ทั้งที่ไม่จำเป็นมีแต่เพิ่มความเสี่ยง เพราะทุกครั้งที่คุณเพิ่มโค้ดที่ต้องดูแล ก็เพิ่มโอกาสเกิด error โดยเปล่าประโยชน์ เช่นเว็บย้ายโดเมนแล้ว URL ใน hreflang กลายเป็น redirect ทั้งชุด กลายเป็นสร้างงานตรวจให้ตัวเองฟรีๆ ทั้งที่ไม่ได้ประโยชน์อะไรกลับมา

เว็บภาษาเดียวควรเอาเวลาไปลงกับเรื่องที่ให้ผลจริงมากกว่า เช่น โครงสร้างเว็บไซต์ที่ดีต่อ SEO ความเร็วหน้าเว็บ และคุณภาพเนื้อหา ส่วน hreflang ค่อยหยิบมาใช้ตอนที่ธุรกิจเริ่มทำหน้าเวอร์ชันอังกฤษเพื่อขยายไปต่างประเทศจริงๆ

  • มีภาษาเดียว ไม่มีหน้าแปล → ไม่ต้องใส่
  • มีหน้าอังกฤษที่เนื้อหาแปลจากหน้าไทย → ควรใส่
  • มีเว็บแยกโดเมนต่อประเทศ เช่น .co.th กับ .com.sg → ควรใส่ ข้ามโดเมนได้
  • หน้าอังกฤษที่เป็นคนละเรื่องกับหน้าไทย ไม่ใช่หน้าแปลกัน → ไม่ใช่เคสของ hreflang

เช็กลิสต์ตรวจ hreflang ก่อนปล่อยขึ้นจริง

ก่อนปล่อยขึ้น production ให้ไล่ตรวจสามชั้น คือความถูกต้องของโค้ด ความครบถ้วนของความสัมพันธ์สองทาง และสถานะของ URL ปลายทางทุกตัว ถ้าผ่านครบสามชั้นนี้ โอกาสที่ Google จะเมินแท็กจะลดลงมาก

วิธีตรวจที่เร็วที่สุดคือเปิด view source ของหน้าตัวอย่างในแต่ละภาษาแล้วเทียบกันตรงๆ ว่าแต่ละหน้ามีแท็กครบชุดเท่ากันหรือไม่ จากนั้นค่อยใช้เครื่องมือ crawl ทั้งเว็บเพื่อจับหน้าที่ตกหล่น และดูรายงานฝั่ง Search Console ประกอบ

ถ้าเว็บมีหลายภาษาและระบบซับซ้อนจนตรวจเองไม่ไหว ทีม SEONo1 รับ ตรวจ Technical SEO ให้ได้ โดยเราจะชี้จุดที่ต้องแก้พร้อมเหตุผลตามหลักที่ Google ประกาศไว้ ไม่มีการรับประกันอันดับ

  • ทุกหน้ามี self-referencing tag ครบ
  • ทุกคู่มี return link ชี้กลับหากันครบสองทาง
  • URL ทุกตัวเป็น URL เต็ม ขึ้นต้นด้วย https:// และตอบ 200
  • รหัสภาษา/ประเทศสะกดถูกตามมาตรฐาน คั่นด้วย `-`
  • ใส่ x-default แล้วถ้าให้บริการหลายประเทศ
  • ใช้วิธีติดตั้งเดียวทั้งเว็บ ไม่ผสมกัน

คำถามที่พบบ่อย

01hreflang เป็นปัจจัยจัดอันดับ (ranking factor) ไหม+

ไม่ใช่ Google ใช้ hreflang เพื่อเลือกว่าจะแสดงเวอร์ชันภาษาหรือประเทศไหนให้ผู้ค้นหาแต่ละคนในผลการค้นหา ไม่ได้ใช้เป็นปัจจัยจัดอันดับโดยตรง แต่มันช่วยลดปัญหาเนื้อหาซ้ำข้ามภาษาและพาผู้ใช้ไปยังหน้าที่ตรงกับเขามากที่สุด

02เว็บไทยที่มีภาษาเดียวต้องใส่ hreflang ไหม+

ไม่จำเป็น hreflang ใช้เมื่อเว็บมีเนื้อหาเดียวกันหลายภาษาหรือหลายประเทศเท่านั้น ถ้าเว็บมีเวอร์ชันเดียวไม่มีหน้าแปล การใส่ไปก็ไม่ช่วยอะไรและเพิ่มความเสี่ยงเกิด error โดยเปล่าประโยชน์

03ไม่ใส่ self-referencing tag จะเกิดอะไรขึ้น+

Google อาจเมิน hreflang annotation ทั้งชุดของหน้านั้น เท่ากับความพยายามใส่แท็กทั้งหมดสูญเปล่า เพราะแต่ละหน้าต้องประกาศ hreflang ที่ชี้กลับมาหาตัวเองด้วยเสมอ เช่นเดียวกับที่ทุกคู่ต้องมี return link ชี้กลับหากันสองทาง

04ใส่ hreflang ผิดแล้วเว็บจะโดนลงโทษหรือโดนแบนไหม+

ไม่โดน ผลของการใส่ผิดคือ Google เมิน annotation ชุดนั้น แล้วกลับไปเดาเองว่าควรแสดงหน้าไหน ซึ่งเป็นคนละเรื่องกับการถูกลงโทษหรือถูกแบน อย่าเชื่อคนที่บอกว่าใส่ hreflang ผิดแล้วเว็บพังทั้งเว็บ

05hreflang จะ redirect ผู้ใช้ไปหน้าภาษาที่ตรงให้อัตโนมัติไหม+

ไม่ hreflang เป็นแค่สัญญาณบอกเครื่องมือค้นหาตอนเลือกแสดงผลเท่านั้น ส่วนการ redirect ตาม IP หรือภาษาเบราว์เซอร์เป็นสิ่งที่เว็บทำเอง ซึ่ง Google เตือนว่าไม่ควร force redirect เพราะจะบล็อก Googlebot ไม่ให้เข้าไปเก็บข้อมูลครบทุกเวอร์ชัน

ส่งเว็บไซต์ให้ SEONo1 ประเมิน