all: use https for links to www.unicode.org and unicode.org

Those domains are available over HTTPS and we should use them to
ensure privacy and message integrity, particularly in the cases where
we are updating the Unicode table.

Change-Id: I861aa1f581034a762e201ba07faf0e106d231eb3
Reviewed-on: https://go-review.googlesource.com/127918
Run-TryBot: Kevin Burke <kev@inburke.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/README.md b/README.md
index c6d2c25..61d5ee4 100644
--- a/README.md
+++ b/README.md
@@ -66,7 +66,7 @@
 
     UNICODE_VERSION=x.x.x go generate
 
-where `x.x.x` must correspond to a directory in http://www.unicode.org/Public/.
+where `x.x.x` must correspond to a directory in https://www.unicode.org/Public/.
 If this version is newer than the version in core it will also update the
 relevant packages there. The idna package in x/net will always be updated.
 
@@ -75,7 +75,7 @@
     CLDR_VERSION=version go generate
 
 where `version` must correspond to a directory in
-http://www.unicode.org/Public/cldr/.
+https://www.unicode.org/Public/cldr/.
 
 Note that the code gets adapted over time to changes in the data and that
 backwards compatibility is not maintained.
diff --git a/cases/cases.go b/cases/cases.go
index 736c0c3..752cdf0 100644
--- a/cases/cases.go
+++ b/cases/cases.go
@@ -14,12 +14,12 @@
 
 // References:
 // - Unicode Reference Manual Chapter 3.13, 4.2, and 5.18.
-// - http://www.unicode.org/reports/tr29/
-// - http://www.unicode.org/Public/6.3.0/ucd/CaseFolding.txt
-// - http://www.unicode.org/Public/6.3.0/ucd/SpecialCasing.txt
-// - http://www.unicode.org/Public/6.3.0/ucd/DerivedCoreProperties.txt
-// - http://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakProperty.txt
-// - http://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakTest.txt
+// - https://www.unicode.org/reports/tr29/
+// - https://www.unicode.org/Public/6.3.0/ucd/CaseFolding.txt
+// - https://www.unicode.org/Public/6.3.0/ucd/SpecialCasing.txt
+// - https://www.unicode.org/Public/6.3.0/ucd/DerivedCoreProperties.txt
+// - https://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakProperty.txt
+// - https://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakTest.txt
 // - http://userguide.icu-project.org/transforms/casemappings
 
 // TODO:
diff --git a/cases/context_test.go b/cases/context_test.go
index f590878..de6ba3f 100644
--- a/cases/context_test.go
+++ b/cases/context_test.go
@@ -81,7 +81,7 @@
 		}
 		// New letters may change case types, but existing case pairings should
 		// not change. See Case Pair Stability in
-		// http://unicode.org/policies/stability_policy.html.
+		// https://unicode.org/policies/stability_policy.html.
 		if rf := unicode.SimpleFold(r); rf != r && unicode.In(rf, assigned) {
 			if got, want := c.info.isCased(), propCased(r); got != want {
 				t.Errorf("cased(%U): got %v; want %v (%x)", r, got, want, c.info)
diff --git a/cases/icu_test.go b/cases/icu_test.go
index 3d07e25..e2b0ada 100644
--- a/cases/icu_test.go
+++ b/cases/icu_test.go
@@ -110,7 +110,7 @@
 		// implementation (at version 57) and thus are not marked as TODO.
 
 		// ICU does not handle leading apostrophe for Dutch and
-		// Afrikaans correctly. See http://unicode.org/cldr/trac/ticket/7078.
+		// Afrikaans correctly. See https://unicode.org/cldr/trac/ticket/7078.
 		{"title", "af nl", "'n"},
 		{"title", "af nl", "'N"},
 
diff --git a/cases/info.go b/cases/info.go
index 3b51f03..87a7c3e 100644
--- a/cases/info.go
+++ b/cases/info.go
@@ -32,7 +32,7 @@
 
 // For the purpose of title casing we use an approximation of the Unicode Word
 // Breaking algorithm defined in Annex #29:
-// http://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table.
+// https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table.
 //
 // For our approximation, we group the Word Break types into the following
 // categories, with associated rules:
diff --git a/cases/map.go b/cases/map.go
index 4baebaa..0f7c6a1 100644
--- a/cases/map.go
+++ b/cases/map.go
@@ -808,7 +808,7 @@
 	return true
 }
 
-// Not part of CLDR, but see http://unicode.org/cldr/trac/ticket/7078.
+// Not part of CLDR, but see https://unicode.org/cldr/trac/ticket/7078.
 func afnlRewrite(c *context) {
 	if c.hasPrefix("'") || c.hasPrefix("’") {
 		c.isMidWord = true
diff --git a/cases/map_test.go b/cases/map_test.go
index 8ac3911..8cfb89e 100644
--- a/cases/map_test.go
+++ b/cases/map_test.go
@@ -143,7 +143,7 @@
 
 	// Note: this specification is not currently part of CLDR. The same holds
 	// for the leading apostrophe handling for Dutch.
-	// See http://unicode.org/cldr/trac/ticket/7078.
+	// See https://unicode.org/cldr/trac/ticket/7078.
 	10: {
 		lang:  "af",
 		src:   "wag 'n bietjie",
diff --git a/collate/build/builder.go b/collate/build/builder.go
index 1104284..092a4b5 100644
--- a/collate/build/builder.go
+++ b/collate/build/builder.go
@@ -53,9 +53,9 @@
 
 // A Tailoring builds a collation table based on another collation table.
 // The table is defined by specifying tailorings to the underlying table.
-// See http://unicode.org/reports/tr35/ for an overview of tailoring
+// See https://unicode.org/reports/tr35/ for an overview of tailoring
 // collation tables.  The CLDR contains pre-defined tailorings for a variety
-// of languages (See http://www.unicode.org/Public/cldr/<version>/core.zip.)
+// of languages (See https://www.unicode.org/Public/cldr/<version>/core.zip.)
 type Tailoring struct {
 	id      string
 	builder *Builder
@@ -93,7 +93,7 @@
 // a slice of runes to a sequence of collation elements.
 // A collation element is specified as list of weights: []int{primary, secondary, ...}.
 // The entries are typically obtained from a collation element table
-// as defined in http://www.unicode.org/reports/tr10/#Data_Table_Format.
+// as defined in https://www.unicode.org/reports/tr10/#Data_Table_Format.
 // Note that the collation elements specified by colelems are only used
 // as a guide.  The actual weights generated by Builder may differ.
 // The argument variables is a list of indices into colelems that should contain
@@ -219,8 +219,8 @@
 // will cause the collation elements corresponding to extend to be appended
 // to the collation elements generated for the entry added by Insert.
 // This has the same net effect as sorting str after the string anchor+extend.
-// See http://www.unicode.org/reports/tr10/#Tailoring_Example for details
-// on parametric tailoring and http://unicode.org/reports/tr35/#Collation_Elements
+// See https://www.unicode.org/reports/tr10/#Tailoring_Example for details
+// on parametric tailoring and https://unicode.org/reports/tr35/#Collation_Elements
 // for full details on LDML.
 //
 // Examples: create a tailoring for Swedish, where "ä" is ordered after "z"
@@ -262,7 +262,7 @@
 	a := t.anchor
 	// Find the first element after the anchor which differs at a level smaller or
 	// equal to the given level.  Then insert at this position.
-	// See http://unicode.org/reports/tr35/#Collation_Elements, Section 5.14.5 for details.
+	// See https://unicode.org/reports/tr35/#Collation_Elements, Section 5.14.5 for details.
 	e.before = t.before
 	if t.before {
 		t.before = false
diff --git a/collate/build/colelem.go b/collate/build/colelem.go
index 726fe54..04fc3bf 100644
--- a/collate/build/colelem.go
+++ b/collate/build/colelem.go
@@ -105,7 +105,7 @@
 //   - v* is the replacement tertiary weight for the first rune,
 //   - w* is the replacement tertiary weight for the second rune,
 // Tertiary weights of subsequent runes should be replaced with maxTertiary.
-// See http://www.unicode.org/reports/tr10/#Compatibility_Decompositions for more details.
+// See https://www.unicode.org/reports/tr10/#Compatibility_Decompositions for more details.
 const (
 	decompID = 0xF0000000
 )
@@ -121,7 +121,7 @@
 }
 
 const (
-	// These constants were taken from http://www.unicode.org/versions/Unicode6.0.0/ch12.pdf.
+	// These constants were taken from https://www.unicode.org/versions/Unicode6.0.0/ch12.pdf.
 	minUnified       rune = 0x4E00
 	maxUnified            = 0x9FFF
 	minCompatibility      = 0xF900
@@ -140,7 +140,7 @@
 // implicitPrimary returns the primary weight for the a rune
 // for which there is no entry for the rune in the collation table.
 // We take a different approach from the one specified in
-// http://unicode.org/reports/tr10/#Implicit_Weights,
+// https://unicode.org/reports/tr10/#Implicit_Weights,
 // but preserve the resulting relative ordering of the runes.
 func implicitPrimary(r rune) int {
 	if unicode.Is(unicode.Ideographic, r) {
@@ -165,7 +165,7 @@
 //   [.FBxx.0020.0002.C][.BBBB.0000.0000.C]
 // We will rewrite these characters to a single CE.
 // We assume the CJK values start at 0x8000.
-// See http://unicode.org/reports/tr10/#Implicit_Weights
+// See https://unicode.org/reports/tr10/#Implicit_Weights
 func convertLargeWeights(elems []rawCE) (res []rawCE, err error) {
 	const (
 		cjkPrimaryStart   = 0xFB40
diff --git a/collate/build/contract.go b/collate/build/contract.go
index a6a7e01..e2df64f 100644
--- a/collate/build/contract.go
+++ b/collate/build/contract.go
@@ -18,7 +18,7 @@
 // the necessary tables.
 // Any Unicode Collation Algorithm (UCA) table entry that has more than
 // one rune one the left-hand side is called a contraction.
-// See http://www.unicode.org/reports/tr10/#Contractions for more details.
+// See https://www.unicode.org/reports/tr10/#Contractions for more details.
 //
 // We define the following terms:
 //   initial:     a rune that appears as the first rune in a contraction.
diff --git a/collate/build/order.go b/collate/build/order.go
index 2c568db..23fcf67 100644
--- a/collate/build/order.go
+++ b/collate/build/order.go
@@ -26,7 +26,7 @@
 // entry is used to keep track of a single entry in the collation element table
 // during building. Examples of entries can be found in the Default Unicode
 // Collation Element Table.
-// See http://www.unicode.org/Public/UCA/6.0.0/allkeys.txt.
+// See https://www.unicode.org/Public/UCA/6.0.0/allkeys.txt.
 type entry struct {
 	str    string // same as string(runes)
 	runes  []rune
diff --git a/collate/collate.go b/collate/collate.go
index 2ce9689..d8c23cb 100644
--- a/collate/collate.go
+++ b/collate/collate.go
@@ -193,7 +193,7 @@
 // The returned slice will point to an allocation in Buffer and will remain
 // valid until the next call to buf.Reset().
 func (c *Collator) Key(buf *Buffer, str []byte) []byte {
-	// See http://www.unicode.org/reports/tr10/#Main_Algorithm for more details.
+	// See https://www.unicode.org/reports/tr10/#Main_Algorithm for more details.
 	buf.init()
 	return c.key(buf, c.getColElems(str))
 }
@@ -203,7 +203,7 @@
 // The returned slice will point to an allocation in Buffer and will retain
 // valid until the next call to buf.ResetKeys().
 func (c *Collator) KeyFromString(buf *Buffer, str string) []byte {
-	// See http://www.unicode.org/reports/tr10/#Main_Algorithm for more details.
+	// See https://www.unicode.org/reports/tr10/#Main_Algorithm for more details.
 	buf.init()
 	return c.key(buf, c.getColElemsString(str))
 }
diff --git a/collate/maketables.go b/collate/maketables.go
index b4c835e..3b25d7b 100644
--- a/collate/maketables.go
+++ b/collate/maketables.go
@@ -195,7 +195,7 @@
 }
 
 // parseUCA parses a Default Unicode Collation Element Table of the format
-// specified in http://www.unicode.org/reports/tr10/#File_Format.
+// specified in https://www.unicode.org/reports/tr10/#File_Format.
 // It returns the variable top.
 func parseUCA(builder *build.Builder) {
 	var r io.ReadCloser
diff --git a/collate/option.go b/collate/option.go
index 63569de..19cb546 100644
--- a/collate/option.go
+++ b/collate/option.go
@@ -217,7 +217,7 @@
 // alternateHandling identifies the various ways in which variables are handled.
 // A rune with a primary weight lower than the variable top is considered a
 // variable.
-// See http://www.unicode.org/reports/tr10/#Variable_Weighting for details.
+// See https://www.unicode.org/reports/tr10/#Variable_Weighting for details.
 type alternateHandling int
 
 const (
diff --git a/collate/reg_test.go b/collate/reg_test.go
index 1ac5fed..4d35984 100644
--- a/collate/reg_test.go
+++ b/collate/reg_test.go
@@ -28,7 +28,7 @@
 	"run time-consuming tests, such as tests that fetch data online")
 
 // This regression test runs tests for the test files in CollationTest.zip
-// (taken from http://www.unicode.org/Public/UCA/<gen.UnicodeVersion()>/).
+// (taken from https://www.unicode.org/Public/UCA/<gen.UnicodeVersion()>/).
 //
 // The test files have the following form:
 // # header
@@ -68,7 +68,7 @@
 }
 
 // parseUCA parses a Default Unicode Collation Element Table of the format
-// specified in http://www.unicode.org/reports/tr10/#File_Format.
+// specified in https://www.unicode.org/reports/tr10/#File_Format.
 // It returns the variable top.
 func parseUCA(builder *build.Builder) {
 	r := gen.OpenUnicodeFile("UCA", "", "allkeys.txt")
diff --git a/collate/tools/colcmp/chars.go b/collate/tools/colcmp/chars.go
index 9f3b9d7..7e5ba02 100644
--- a/collate/tools/colcmp/chars.go
+++ b/collate/tools/colcmp/chars.go
@@ -1,5 +1,5 @@
 // Generated by running
-//  maketables -root=http://unicode.org/Public/UCA/6.2.0/CollationAuxiliary.zip -cldr=http://www.unicode.org/Public/cldr/23/core.zip
+//  maketables -root=https://unicode.org/Public/UCA/6.2.0/CollationAuxiliary.zip -cldr=https://www.unicode.org/Public/cldr/23/core.zip
 // DO NOT EDIT
 // TODO: implement more compact representation for sparse blocks.
 
diff --git a/encoding/encoding.go b/encoding/encoding.go
index 221f175..a0bd7cd 100644
--- a/encoding/encoding.go
+++ b/encoding/encoding.go
@@ -124,7 +124,7 @@
 }
 
 // ASCIISub is the ASCII substitute character, as recommended by
-// http://unicode.org/reports/tr36/#Text_Comparison
+// https://unicode.org/reports/tr36/#Text_Comparison
 const ASCIISub = '\x1a'
 
 // Nop is the nop encoding. Its transformed bytes are the same as the source
diff --git a/encoding/internal/identifier/identifier.go b/encoding/internal/identifier/identifier.go
index 7351b4e..5c9b85c 100644
--- a/encoding/internal/identifier/identifier.go
+++ b/encoding/internal/identifier/identifier.go
@@ -34,7 +34,7 @@
 // - http://www.iana.org/assignments/character-sets/character-sets.xhtml
 // - http://www.iana.org/assignments/ianacharset-mib/ianacharset-mib
 // - http://www.ietf.org/rfc/rfc2978.txt
-// - http://www.unicode.org/reports/tr22/
+// - https://www.unicode.org/reports/tr22/
 // - http://www.w3.org/TR/encoding/
 // - https://encoding.spec.whatwg.org/
 // - https://encoding.spec.whatwg.org/encodings.json
diff --git a/encoding/internal/identifier/mib.go b/encoding/internal/identifier/mib.go
index 768842b..8cc2902 100644
--- a/encoding/internal/identifier/mib.go
+++ b/encoding/internal/identifier/mib.go
@@ -884,27 +884,27 @@
 
 	// CESU8 is the MIB identifier with IANA name CESU-8.
 	//
-	// http://www.unicode.org/unicode/reports/tr26
+	// https://www.unicode.org/unicode/reports/tr26
 	CESU8 MIB = 1016
 
 	// UTF32 is the MIB identifier with IANA name UTF-32.
 	//
-	// http://www.unicode.org/unicode/reports/tr19/
+	// https://www.unicode.org/unicode/reports/tr19/
 	UTF32 MIB = 1017
 
 	// UTF32BE is the MIB identifier with IANA name UTF-32BE.
 	//
-	// http://www.unicode.org/unicode/reports/tr19/
+	// https://www.unicode.org/unicode/reports/tr19/
 	UTF32BE MIB = 1018
 
 	// UTF32LE is the MIB identifier with IANA name UTF-32LE.
 	//
-	// http://www.unicode.org/unicode/reports/tr19/
+	// https://www.unicode.org/unicode/reports/tr19/
 	UTF32LE MIB = 1019
 
 	// BOCU1 is the MIB identifier with IANA name BOCU-1.
 	//
-	// http://www.unicode.org/notes/tn6/
+	// https://www.unicode.org/notes/tn6/
 	BOCU1 MIB = 1020
 
 	// Windows30Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.0-Latin-1.
diff --git a/encoding/japanese/maketables.go b/encoding/japanese/maketables.go
index d6c10de..023957a 100644
--- a/encoding/japanese/maketables.go
+++ b/encoding/japanese/maketables.go
@@ -10,8 +10,8 @@
 //	go run maketables.go | gofmt > tables.go
 
 // TODO: Emoji extensions?
-// http://www.unicode.org/faq/emoji_dingbats.html
-// http://www.unicode.org/Public/UNIDATA/EmojiSources.txt
+// https://www.unicode.org/faq/emoji_dingbats.html
+// https://www.unicode.org/Public/UNIDATA/EmojiSources.txt
 
 import (
 	"bufio"
diff --git a/encoding/unicode/unicode.go b/encoding/unicode/unicode.go
index 579cadf..4850ff3 100644
--- a/encoding/unicode/unicode.go
+++ b/encoding/unicode/unicode.go
@@ -145,7 +145,7 @@
 // and consumed in a greater context that implies a certain endianness, use
 // IgnoreBOM. Otherwise, use ExpectBOM and always produce and consume a BOM.
 //
-// In the language of http://www.unicode.org/faq/utf_bom.html#bom10, IgnoreBOM
+// In the language of https://www.unicode.org/faq/utf_bom.html#bom10, IgnoreBOM
 // corresponds to "Where the precise type of the data stream is known... the
 // BOM should not be used" and ExpectBOM corresponds to "A particular
 // protocol... may require use of the BOM".
diff --git a/encoding/unicode/utf32/utf32.go b/encoding/unicode/utf32/utf32.go
index 48b2152..345eb4f 100644
--- a/encoding/unicode/utf32/utf32.go
+++ b/encoding/unicode/utf32/utf32.go
@@ -59,7 +59,7 @@
 // endianness, use IgnoreBOM. Otherwise, use ExpectBOM and always produce
 // and consume a BOM.
 //
-// In the language of http://www.unicode.org/faq/utf_bom.html#bom10,
+// In the language of https://www.unicode.org/faq/utf_bom.html#bom10,
 // IgnoreBOM corresponds to "Where the precise type of the data stream is
 // known... the BOM should not be used" and ExpectBOM corresponds to "A
 // particular protocol... may require use of the BOM".
diff --git a/feature/plural/gen.go b/feature/plural/gen.go
index 104986a..42f2f86 100644
--- a/feature/plural/gen.go
+++ b/feature/plural/gen.go
@@ -7,7 +7,7 @@
 package main
 
 // This file generates data for the CLDR plural rules, as defined in
-//    http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules
+//    https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules
 //
 // We assume a slightly simplified grammar:
 //
diff --git a/feature/plural/plural.go b/feature/plural/plural.go
index 517a628..5b521b1 100644
--- a/feature/plural/plural.go
+++ b/feature/plural/plural.go
@@ -8,7 +8,7 @@
 //
 // The definitions in this package are based on the plural rule handling defined
 // in CLDR. See
-// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules for
+// https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules for
 // details.
 package plural
 
@@ -151,7 +151,7 @@
 
 // MatchPlural returns the plural form for the given language and plural
 // operands (as defined in
-// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules):
+// https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules):
 //  where
 //  	n  absolute value of the source number (integer and decimals)
 //  input
diff --git a/internal/colltab/collelem.go b/internal/colltab/collelem.go
index 2855589..396cebd 100644
--- a/internal/colltab/collelem.go
+++ b/internal/colltab/collelem.go
@@ -327,13 +327,13 @@
 //   - v* is the replacement tertiary weight for the first rune,
 //   - w* is the replacement tertiary weight for the second rune,
 // Tertiary weights of subsequent runes should be replaced with maxTertiary.
-// See http://www.unicode.org/reports/tr10/#Compatibility_Decompositions for more details.
+// See https://www.unicode.org/reports/tr10/#Compatibility_Decompositions for more details.
 func splitDecompose(ce Elem) (t1, t2 uint8) {
 	return uint8(ce), uint8(ce >> 8)
 }
 
 const (
-	// These constants were taken from http://www.unicode.org/versions/Unicode6.0.0/ch12.pdf.
+	// These constants were taken from https://www.unicode.org/versions/Unicode6.0.0/ch12.pdf.
 	minUnified       rune = 0x4E00
 	maxUnified            = 0x9FFF
 	minCompatibility      = 0xF900
@@ -352,7 +352,7 @@
 // implicitPrimary returns the primary weight for the a rune
 // for which there is no entry for the rune in the collation table.
 // We take a different approach from the one specified in
-// http://unicode.org/reports/tr10/#Implicit_Weights,
+// https://unicode.org/reports/tr10/#Implicit_Weights,
 // but preserve the resulting relative ordering of the runes.
 func implicitPrimary(r rune) int {
 	if unicode.Is(unicode.Ideographic, r) {
diff --git a/internal/export/idna/idna10.0.0.go b/internal/export/idna/idna10.0.0.go
index 92b4a39..1244f9c 100644
--- a/internal/export/idna/idna10.0.0.go
+++ b/internal/export/idna/idna10.0.0.go
@@ -11,8 +11,8 @@
 //
 // IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC
 // 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894.
-// UTS #46 is defined in http://www.unicode.org/reports/tr46.
-// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the
+// UTS #46 is defined in https://www.unicode.org/reports/tr46.
+// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the
 // differences between these two standards.
 package idna // import "golang.org/x/text/internal/export/idna"
 
@@ -298,7 +298,7 @@
 }
 
 // process implements the algorithm described in section 4 of UTS #46,
-// see http://www.unicode.org/reports/tr46.
+// see https://www.unicode.org/reports/tr46.
 func (p *Profile) process(s string, toASCII bool) (string, error) {
 	var err error
 	var isBidi bool
diff --git a/internal/export/idna/idna10.0.0_test.go b/internal/export/idna/idna10.0.0_test.go
index d039091..ed01f93 100644
--- a/internal/export/idna/idna10.0.0_test.go
+++ b/internal/export/idna/idna10.0.0_test.go
@@ -10,7 +10,7 @@
 
 // TestLabelErrors tests strings returned in case of error. All results should
 // be identical to the reference implementation and can be verified at
-// http://unicode.org/cldr/utility/idna.jsp. The reference implementation,
+// https://unicode.org/cldr/utility/idna.jsp. The reference implementation,
 // however, seems to not display Bidi and ContextJ errors.
 //
 // In some cases the behavior of browsers is added as a comment. In all cases,
diff --git a/internal/export/idna/idna9.0.0.go b/internal/export/idna/idna9.0.0.go
index c7d06c8..25f2ac3 100644
--- a/internal/export/idna/idna9.0.0.go
+++ b/internal/export/idna/idna9.0.0.go
@@ -11,8 +11,8 @@
 //
 // IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC
 // 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894.
-// UTS #46 is defined in http://www.unicode.org/reports/tr46.
-// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the
+// UTS #46 is defined in https://www.unicode.org/reports/tr46.
+// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the
 // differences between these two standards.
 package idna // import "golang.org/x/text/internal/export/idna"
 
@@ -300,7 +300,7 @@
 }
 
 // process implements the algorithm described in section 4 of UTS #46,
-// see http://www.unicode.org/reports/tr46.
+// see https://www.unicode.org/reports/tr46.
 func (p *Profile) process(s string, toASCII bool) (string, error) {
 	var err error
 	if p.mapping != nil {
diff --git a/internal/export/idna/idna9.0.0_test.go b/internal/export/idna/idna9.0.0_test.go
index d60394c..7047d74 100644
--- a/internal/export/idna/idna9.0.0_test.go
+++ b/internal/export/idna/idna9.0.0_test.go
@@ -10,7 +10,7 @@
 
 // TestLabelErrors tests strings returned in case of error. All results should
 // be identical to the reference implementation and can be verified at
-// http://unicode.org/cldr/utility/idna.jsp. The reference implementation,
+// https://unicode.org/cldr/utility/idna.jsp. The reference implementation,
 // however, seems to not display Bidi and ContextJ errors.
 //
 // In some cases the behavior of browsers is added as a comment. In all cases,
diff --git a/internal/export/idna/idna_test.go b/internal/export/idna/idna_test.go
index f9dadc0..6290cd2 100644
--- a/internal/export/idna/idna_test.go
+++ b/internal/export/idna/idna_test.go
@@ -62,7 +62,7 @@
 // doTest performs a single test f(input) and verifies that the output matches
 // out and that the returned error is expected. The errors string contains
 // all allowed error codes as categorized in
-// http://www.unicode.org/Public/idna/9.0.0/IdnaTest.txt:
+// https://www.unicode.org/Public/idna/9.0.0/IdnaTest.txt:
 // P: Processing
 // V: Validity
 // A: to ASCII
diff --git a/internal/gen/gen.go b/internal/gen/gen.go
index 4c3f760..13257d6 100644
--- a/internal/gen/gen.go
+++ b/internal/gen/gen.go
@@ -7,7 +7,7 @@
 //
 // This package defines command line flags that are common to most generation
 // tools. The flags allow for specifying specific Unicode and CLDR versions
-// in the public Unicode data repository (http://www.unicode.org/Public).
+// in the public Unicode data repository (https://www.unicode.org/Public).
 //
 // A local Unicode data mirror can be set through the flag -local or the
 // environment variable UNICODE_DIR. The former takes precedence. The local
@@ -40,7 +40,7 @@
 
 var (
 	url = flag.String("url",
-		"http://www.unicode.org/Public",
+		"https://www.unicode.org/Public",
 		"URL of Unicode database directory")
 	iana = flag.String("iana",
 		"http://www.iana.org",
diff --git a/internal/language/language.go b/internal/language/language.go
index aa5f5f4..1e74d1a 100644
--- a/internal/language/language.go
+++ b/internal/language/language.go
@@ -301,7 +301,7 @@
 
 // TypeForKey returns the type associated with the given key, where key and type
 // are of the allowed values defined for the Unicode locale extension ('u') in
-// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
 // TypeForKey will traverse the inheritance chain to get the correct value.
 func (t Tag) TypeForKey(key string) string {
 	if start, end, _ := t.findTypeForKey(key); end != start {
@@ -317,7 +317,7 @@
 
 // SetTypeForKey returns a new Tag with the key set to type, where key and type
 // are of the allowed values defined for the Unicode locale extension ('u') in
-// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
 // An empty value removes an existing pair with the same key.
 func (t Tag) SetTypeForKey(key, value string) (Tag, error) {
 	if t.IsPrivateUse() {
diff --git a/internal/language/match_test.go b/internal/language/match_test.go
index e1a5bd7..e4f117f 100644
--- a/internal/language/match_test.go
+++ b/internal/language/match_test.go
@@ -67,7 +67,7 @@
 		//     xx -> xx-Scrp-AA       implies xx-AA -> xx-Scrp-AA
 		//
 		// The algorithm specified in
-		//   http://unicode.org/reports/tr35/tr35-9.html#Supplemental_Data,
+		//   https://unicode.org/reports/tr35/tr35-9.html#Supplemental_Data,
 		// Section C.10, does not handle the first case. For example,
 		// the CLDR data contains an entry und-BJ -> fr-Latn-BJ, but not
 		// there is no rule for und-Latn-BJ.  According to spec, und-Latn-BJ
diff --git a/internal/language/parse.go b/internal/language/parse.go
index 3c48288..2be83e1 100644
--- a/internal/language/parse.go
+++ b/internal/language/parse.go
@@ -225,7 +225,7 @@
 // ValueError. The Tag returned in this case is just stripped of the unknown
 // value. All other values are preserved. It accepts tags in the BCP 47 format
 // and extensions to this standard defined in
-// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
 func Parse(s string) (t Tag, err error) {
 	// TODO: consider supporting old-style locale key-value pairs.
 	if s == "" {
diff --git a/internal/match.go b/internal/match.go
index a67fcac..1cc004a 100644
--- a/internal/match.go
+++ b/internal/match.go
@@ -6,7 +6,7 @@
 
 // This file contains matchers that implement CLDR inheritance.
 //
-//     See http://unicode.org/reports/tr35/#Locale_Inheritance.
+//     See https://unicode.org/reports/tr35/#Locale_Inheritance.
 //
 // Some of the inheritance described in this document is already handled by
 // the cldr package.
diff --git a/internal/number/number.go b/internal/number/number.go
index fffc176..e1d933c 100644
--- a/internal/number/number.go
+++ b/internal/number/number.go
@@ -67,7 +67,7 @@
 							}
 							// Fall back to Latin and start from the original
 							// language. See
-							// http://unicode.org/reports/tr35/#Locale_Inheritance.
+							// https://unicode.org/reports/tr35/#Locale_Inheritance.
 							ns = numLatn
 							langIndex = compactIndex
 							continue outerLoop
diff --git a/internal/number/pattern.go b/internal/number/pattern.go
index b95ca40..06e5955 100644
--- a/internal/number/pattern.go
+++ b/internal/number/pattern.go
@@ -10,7 +10,7 @@
 )
 
 // This file contains a parser for the CLDR number patterns as described in
-// http://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns.
+// https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns.
 //
 // The following BNF is derived from this standard.
 //
@@ -201,7 +201,7 @@
 
 // ParsePattern extracts formatting information from a CLDR number pattern.
 //
-// See http://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns.
+// See https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns.
 func ParsePattern(s string) (f *Pattern, err error) {
 	p := parser{Pattern: &Pattern{}}
 
diff --git a/internal/ucd/ucd.go b/internal/ucd/ucd.go
index 8c45b5f..0879bc8 100644
--- a/internal/ucd/ucd.go
+++ b/internal/ucd/ucd.go
@@ -3,8 +3,8 @@
 // license that can be found in the LICENSE file.
 
 // Package ucd provides a parser for Unicode Character Database files, the
-// format of which is defined in http://www.unicode.org/reports/tr44/. See
-// http://www.unicode.org/Public/UCD/latest/ucd/ for example files.
+// format of which is defined in https://www.unicode.org/reports/tr44/. See
+// https://www.unicode.org/Public/UCD/latest/ucd/ for example files.
 //
 // It currently does not support substitutions of missing fields.
 package ucd // import "golang.org/x/text/internal/ucd"
diff --git a/language/display/display_test.go b/language/display/display_test.go
index 4f5b48e..f26bace 100644
--- a/language/display/display_test.go
+++ b/language/display/display_test.go
@@ -382,7 +382,7 @@
 				// There are inconsistencies w.r.t. capitalization in the tests
 				// due to CLDR's update procedure which treats modern and other
 				// languages differently.
-				// See http://unicode.org/cldr/trac/ticket/8051.
+				// See https://unicode.org/cldr/trac/ticket/8051.
 				// TODO: use language capitalization to sanitize the strings.
 				t.Errorf("Name(%s) = %q; want %q", tag, n, name)
 			}
@@ -609,7 +609,7 @@
 		// Take the entry for sr which has the matching script.
 		// TODO: Capitalization changed as of CLDR 26, but change seems
 		// arbitrary. Revisit capitalization with revision 27. See
-		// http://unicode.org/cldr/trac/ticket/8051.
+		// https://unicode.org/cldr/trac/ticket/8051.
 		{"sr", "српски"},
 		// TODO: sr-ME should show up as Serbian or Montenegrin, not Serbo-
 		// Croatian. This is an artifact of the current algorithm, which is the
diff --git a/language/display/maketables.go b/language/display/maketables.go
index 8f2fd07..b520e8a 100644
--- a/language/display/maketables.go
+++ b/language/display/maketables.go
@@ -414,7 +414,7 @@
 		index = index[:n]
 
 		// Workaround for a bug in CLDR 26.
-		// See http://unicode.org/cldr/trac/ticket/8042.
+		// See https://unicode.org/cldr/trac/ticket/8042.
 		if cldr.Version == "26" && sup.String() == "hsb" {
 			data = bytes.Replace(data, []byte{'"'}, nil, 1)
 		}
diff --git a/language/language.go b/language/language.go
index f892354..b042be3 100644
--- a/language/language.go
+++ b/language/language.go
@@ -142,8 +142,8 @@
 						// for legacy reasons, CLDR maps "no", the macro language
 						// code for Norwegian, to the dominant variant "nb". This
 						// change is currently under consideration for CLDR as well.
-						// See http://unicode.org/cldr/trac/ticket/2698 and also
-						// http://unicode.org/cldr/trac/ticket/1790 for some of the
+						// See https://unicode.org/cldr/trac/ticket/2698 and also
+						// https://unicode.org/cldr/trac/ticket/1790 for some of the
 						// practical implications. TODO: this check could be removed
 						// if CLDR adopts this change.
 						if c&CLDR == 0 || t.LangID != _nb {
@@ -266,7 +266,7 @@
 // If a script cannot be inferred (Zzzz, No) is returned. We do not use Zyyy (undetermined)
 // as one would suspect from the IANA registry for BCP 47. In a Unicode context Zyyy marks
 // common characters (like 1, 2, 3, '.', etc.) and is therefore more like multiple scripts.
-// See http://www.unicode.org/reports/tr24/#Values for more details. Zzzz is also used for
+// See https://www.unicode.org/reports/tr24/#Values for more details. Zzzz is also used for
 // unknown value in CLDR.  (Zzzz, Exact) is returned if Zzzz was explicitly specified.
 // Note that an inferred script is never guaranteed to be the correct one. Latin is
 // almost exclusively used for Afrikaans, but Arabic has been used for some texts
@@ -405,7 +405,7 @@
 
 // TypeForKey returns the type associated with the given key, where key and type
 // are of the allowed values defined for the Unicode locale extension ('u') in
-// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
 // TypeForKey will traverse the inheritance chain to get the correct value.
 func (t Tag) TypeForKey(key string) string {
 	if !compact.Tag(t).MayHaveExtensions() {
@@ -418,7 +418,7 @@
 
 // SetTypeForKey returns a new Tag with the key set to type, where key and type
 // are of the allowed values defined for the Unicode locale extension ('u') in
-// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
 // An empty value removes an existing pair with the same key.
 func (t Tag) SetTypeForKey(key, value string) (Tag, error) {
 	tt, err := t.tag().SetTypeForKey(key, value)
diff --git a/language/match.go b/language/match.go
index 8cf116a..f734921 100644
--- a/language/match.go
+++ b/language/match.go
@@ -143,7 +143,7 @@
 // CLDR defines an algorithm for finding the best match between two sets of language
 // tags. The basic algorithm defines how to score a possible match and then find
 // the match with the best score
-// (see http://www.unicode.org/reports/tr35/#LanguageMatching).
+// (see https://www.unicode.org/reports/tr35/#LanguageMatching).
 // Using scoring has several disadvantages. The scoring obfuscates the importance of
 // the various factors considered, making the algorithm harder to understand. Using
 // scoring also requires the full score to be computed for each pair of tags.
diff --git a/language/parse.go b/language/parse.go
index d50c8aa..3f7ae4d 100644
--- a/language/parse.go
+++ b/language/parse.go
@@ -28,7 +28,7 @@
 // ValueError. The Tag returned in this case is just stripped of the unknown
 // value. All other values are preserved. It accepts tags in the BCP 47 format
 // and extensions to this standard defined in
-// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
 // The resulting tag is canonicalized using the default canonicalization type.
 func Parse(s string) (t Tag, err error) {
 	return Default.Parse(s)
@@ -40,7 +40,7 @@
 // ValueError. The Tag returned in this case is just stripped of the unknown
 // value. All other values are preserved. It accepts tags in the BCP 47 format
 // and extensions to this standard defined in
-// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
 // The resulting tag is canonicalized using the the canonicalization type c.
 func (c CanonType) Parse(s string) (t Tag, err error) {
 	tt, err := language.Parse(s)
diff --git a/language/testdata/CLDRLocaleMatcherTest.txt b/language/testdata/CLDRLocaleMatcherTest.txt
index 6568f2d..065ef06 100644
--- a/language/testdata/CLDRLocaleMatcherTest.txt
+++ b/language/testdata/CLDRLocaleMatcherTest.txt
@@ -312,8 +312,8 @@
 it, en ; 	und, en ; 	en
 
 # examples from
-# http://unicode.org/repos/cldr/tags/latest/common/bcp47/
-# http://unicode.org/repos/cldr/tags/latest/common/validity/variant.xml
+# https://unicode.org/repos/cldr/tags/latest/common/bcp47/
+# https://unicode.org/repos/cldr/tags/latest/common/validity/variant.xml
 
 ##################################################
 # testUnHack
diff --git a/unicode/bidi/bidi.go b/unicode/bidi/bidi.go
index 3fc4a62..e8edc54 100644
--- a/unicode/bidi/bidi.go
+++ b/unicode/bidi/bidi.go
@@ -6,7 +6,7 @@
 
 // Package bidi contains functionality for bidirectional text support.
 //
-// See http://www.unicode.org/reports/tr9.
+// See https://www.unicode.org/reports/tr9.
 //
 // NOTE: UNDER CONSTRUCTION. This API may change in backwards incompatible ways
 // and without notice.
diff --git a/unicode/bidi/bracket.go b/unicode/bidi/bracket.go
index 601e259..3fef316 100644
--- a/unicode/bidi/bracket.go
+++ b/unicode/bidi/bracket.go
@@ -12,7 +12,7 @@
 
 // This file contains a port of the reference implementation of the
 // Bidi Parentheses Algorithm:
-// http://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/BidiPBAReference.java
+// https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/BidiPBAReference.java
 //
 // The implementation in this file covers definitions BD14-BD16 and rule N0
 // of UAX#9.
diff --git a/unicode/bidi/core.go b/unicode/bidi/core.go
index d4c1399..48d1440 100644
--- a/unicode/bidi/core.go
+++ b/unicode/bidi/core.go
@@ -7,7 +7,7 @@
 import "log"
 
 // This implementation is a port based on the reference implementation found at:
-// http://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/
+// https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/
 //
 // described in Unicode Bidirectional Algorithm (UAX #9).
 //
diff --git a/unicode/bidi/core_test.go b/unicode/bidi/core_test.go
index f28d386..b653399 100644
--- a/unicode/bidi/core_test.go
+++ b/unicode/bidi/core_test.go
@@ -21,7 +21,7 @@
 var testLevels = flag.Bool("levels", false, "enable testing of levels")
 
 // TestBidiCore performs the tests in BidiTest.txt.
-// See http://www.unicode.org/Public/UCD/latest/ucd/BidiTest.txt.
+// See https://www.unicode.org/Public/UCD/latest/ucd/BidiTest.txt.
 func TestBidiCore(t *testing.T) {
 	testtext.SkipIfNotLong(t)
 
@@ -93,7 +93,7 @@
 }
 
 // TestBidiCharacters performs the tests in BidiCharacterTest.txt.
-// See http://www.unicode.org/Public/UCD/latest/ucd/BidiCharacterTest.txt
+// See https://www.unicode.org/Public/UCD/latest/ucd/BidiCharacterTest.txt
 func TestBidiCharacters(t *testing.T) {
 	testtext.SkipIfNotLong(t)
 
@@ -195,7 +195,7 @@
 }
 
 // bidiClass names and codes taken from class "bc" in
-// http://www.unicode.org/Public/8.0.0/ucd/PropertyValueAliases.txt
+// https://www.unicode.org/Public/8.0.0/ucd/PropertyValueAliases.txt
 var bidiClass = map[string]Class{
 	"AL":  AL,  // classArabicLetter,
 	"AN":  AN,  // classArabicNumber,
diff --git a/unicode/bidi/gen.go b/unicode/bidi/gen.go
index 4e1c7ba..987fc16 100644
--- a/unicode/bidi/gen.go
+++ b/unicode/bidi/gen.go
@@ -26,7 +26,7 @@
 }
 
 // bidiClass names and codes taken from class "bc" in
-// http://www.unicode.org/Public/8.0.0/ucd/PropertyValueAliases.txt
+// https://www.unicode.org/Public/8.0.0/ucd/PropertyValueAliases.txt
 var bidiClass = map[string]Class{
 	"AL":  AL,  // ArabicLetter
 	"AN":  AN,  // ArabicNumber
diff --git a/unicode/bidi/gen_ranges.go b/unicode/bidi/gen_ranges.go
index 51bd68f..02c3b50 100644
--- a/unicode/bidi/gen_ranges.go
+++ b/unicode/bidi/gen_ranges.go
@@ -15,7 +15,7 @@
 )
 
 // These tables are hand-extracted from:
-// http://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedBidiClass.txt
+// https://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedBidiClass.txt
 func visitDefaults(fn func(r rune, c Class)) {
 	// first write default values for ranges listed above.
 	visitRunes(fn, AL, []rune{
diff --git a/unicode/bidi/ranges_test.go b/unicode/bidi/ranges_test.go
index bfaecd5..3670940 100644
--- a/unicode/bidi/ranges_test.go
+++ b/unicode/bidi/ranges_test.go
@@ -11,7 +11,7 @@
 )
 
 // These tables are hand-extracted from:
-// http://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedBidiClass.txt
+// https://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedBidiClass.txt
 func visitDefaults(fn func(r rune, c Class)) {
 	// first write default values for ranges listed above.
 	visitRunes(fn, AL, []rune{
diff --git a/unicode/cldr/collate.go b/unicode/cldr/collate.go
index 80ee28d..27c5bac 100644
--- a/unicode/cldr/collate.go
+++ b/unicode/cldr/collate.go
@@ -27,7 +27,7 @@
 	// cldrIndex is a Unicode-reserved sentinel value used to mark the start
 	// of a grouping within an index.
 	// We ignore any rule that starts with this rune.
-	// See http://unicode.org/reports/tr35/#Collation_Elements for details.
+	// See https://unicode.org/reports/tr35/#Collation_Elements for details.
 	cldrIndex = "\uFDD0"
 
 	// specialAnchor is the format in which to represent logical reset positions,
@@ -51,7 +51,7 @@
 }
 
 // processRules parses rules in the Collation Rule Syntax defined in
-// http://www.unicode.org/reports/tr35/tr35-collation.html#Collation_Tailorings.
+// https://www.unicode.org/reports/tr35/tr35-collation.html#Collation_Tailorings.
 func processRules(p RuleProcessor, s string) (err error) {
 	chk := func(s string, e error) string {
 		if err == nil {
diff --git a/unicode/cldr/decode.go b/unicode/cldr/decode.go
index bb4d4d1..48f6bd6 100644
--- a/unicode/cldr/decode.go
+++ b/unicode/cldr/decode.go
@@ -101,7 +101,7 @@
 		if l.Identity == nil {
 			return fmt.Errorf("%s/%s: missing identity element", dir, id)
 		}
-		// TODO: verify when CLDR bug http://unicode.org/cldr/trac/ticket/8970
+		// TODO: verify when CLDR bug https://unicode.org/cldr/trac/ticket/8970
 		// is resolved.
 		// path := strings.Split(id, "_")
 		// if lang := l.Identity.Language.Type; lang != path[0] {
diff --git a/unicode/cldr/resolve.go b/unicode/cldr/resolve.go
index 691b590..d9a1ff3 100644
--- a/unicode/cldr/resolve.go
+++ b/unicode/cldr/resolve.go
@@ -5,7 +5,7 @@
 package cldr
 
 // This file implements the various inheritance constructs defined by LDML.
-// See http://www.unicode.org/reports/tr35/#Inheritance_and_Validity
+// See https://www.unicode.org/reports/tr35/#Inheritance_and_Validity
 // for more details.
 
 import (
diff --git a/unicode/norm/composition.go b/unicode/norm/composition.go
index bab4c5d..9f37ef0 100644
--- a/unicode/norm/composition.go
+++ b/unicode/norm/composition.go
@@ -407,7 +407,7 @@
 
 // decomposeHangul algorithmically decomposes a Hangul rune into
 // its Jamo components.
-// See http://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul.
+// See https://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul.
 func (rb *reorderBuffer) decomposeHangul(r rune) {
 	r -= hangulBase
 	x := r % jamoTCount
@@ -420,7 +420,7 @@
 }
 
 // combineHangul algorithmically combines Jamo character components into Hangul.
-// See http://unicode.org/reports/tr15/#Hangul for details on combining Hangul.
+// See https://unicode.org/reports/tr15/#Hangul for details on combining Hangul.
 func (rb *reorderBuffer) combineHangul(s, i, k int) {
 	b := rb.rune[:]
 	bn := rb.nrune
diff --git a/unicode/norm/maketables.go b/unicode/norm/maketables.go
index 338c395..2e5c695 100644
--- a/unicode/norm/maketables.go
+++ b/unicode/norm/maketables.go
@@ -261,7 +261,7 @@
 
 // CompositionExclusions.txt has form:
 // 0958    # ...
-// See http://unicode.org/reports/tr44/ for full explanation
+// See https://unicode.org/reports/tr44/ for full explanation
 func loadCompositionExclusions() {
 	f := gen.OpenUCDFile("CompositionExclusions.txt")
 	defer f.Close()
@@ -857,7 +857,7 @@
 // DerivedNormalizationProps.txt has form:
 // 00C0..00C5    ; NFD_QC; N # ...
 // 0374          ; NFD_QC; N # ...
-// See http://unicode.org/reports/tr44/ for full explanation
+// See https://unicode.org/reports/tr44/ for full explanation
 func testDerived() {
 	f := gen.OpenUCDFile("DerivedNormalizationProps.txt")
 	defer f.Close()
diff --git a/unicode/norm/normalize.go b/unicode/norm/normalize.go
index e28ac64..95efcf2 100644
--- a/unicode/norm/normalize.go
+++ b/unicode/norm/normalize.go
@@ -29,8 +29,8 @@
 // proceed independently on both sides:
 //   f(x) == append(f(x[0:n]), f(x[n:])...)
 //
-// References: http://unicode.org/reports/tr15/ and
-// http://unicode.org/notes/tn5/.
+// References: https://unicode.org/reports/tr15/ and
+// https://unicode.org/notes/tn5/.
 type Form int
 
 const (
diff --git a/unicode/norm/normalize_test.go b/unicode/norm/normalize_test.go
index e3c0ac7..0e56d45 100644
--- a/unicode/norm/normalize_test.go
+++ b/unicode/norm/normalize_test.go
@@ -119,7 +119,7 @@
 	{grave(31), 60, grave(30) + cgj},
 	{"a" + grave(31), 61, "a" + grave(30) + cgj},
 
-	// Stability tests: see http://www.unicode.org/review/pr-29.html.
+	// Stability tests: see https://www.unicode.org/review/pr-29.html.
 	// U+0300 COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;;;;
 	// U+0B47 ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
 	// U+0B3E ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
@@ -674,7 +674,7 @@
 		"\u1161\u11a8",
 	},
 
-	// Stability tests: see http://www.unicode.org/review/pr-29.html.
+	// Stability tests: see https://www.unicode.org/review/pr-29.html.
 	{"", "\u0b47\u0300\u0b3e", "\u0b47\u0300\u0b3e"},
 	{"", "\u1100\u0300\u1161", "\u1100\u0300\u1161"},
 	{"", "\u0b47\u0b3e", "\u0b4b"},
@@ -1182,7 +1182,7 @@
 var overflow = string(bytes.Repeat([]byte("\u035D"), 4096)) + "\u035B"
 
 // Tests sampled from the Canonical ordering tests (Part 2) of
-// http://unicode.org/Public/UNIDATA/NormalizationTest.txt
+// https://unicode.org/Public/UNIDATA/NormalizationTest.txt
 const txt_canon = `\u0061\u0315\u0300\u05AE\u0300\u0062 \u0061\u0300\u0315\u0300\u05AE\u0062
 \u0061\u0302\u0315\u0300\u05AE\u0062 \u0061\u0307\u0315\u0300\u05AE\u0062
 \u0061\u0315\u0300\u05AE\u030A\u0062 \u0061\u059A\u0316\u302A\u031C\u0062
diff --git a/unicode/norm/ucd_test.go b/unicode/norm/ucd_test.go
index 29205a6..edde55f 100644
--- a/unicode/norm/ucd_test.go
+++ b/unicode/norm/ucd_test.go
@@ -30,7 +30,7 @@
 }
 
 // This regression test runs the test set in NormalizationTest.txt
-// (taken from http://www.unicode.org/Public/<unicode.Version>/ucd/).
+// (taken from https://www.unicode.org/Public/<unicode.Version>/ucd/).
 //
 // NormalizationTest.txt has form:
 // @Part0 # Specific cases
diff --git a/unicode/rangetable/gen.go b/unicode/rangetable/gen.go
index 5b5f828..c2d3674 100644
--- a/unicode/rangetable/gen.go
+++ b/unicode/rangetable/gen.go
@@ -31,7 +31,7 @@
 	go run gen.go --versions=4.1.0,5.0.0,6.0.0,6.1.0,6.2.0,6.3.0,7.0.0
 
 and ensure that the latest versions are included by checking:
-	http://www.unicode.org/Public/`
+	https://www.unicode.org/Public/`
 
 func getVersions() []string {
 	if *versionList == "" {
@@ -76,7 +76,7 @@
 	for _, v := range versions {
 		assigned := []rune{}
 
-		r := gen.Open("http://www.unicode.org/Public/", "", v+"/ucd/UnicodeData.txt")
+		r := gen.Open("https://www.unicode.org/Public/", "", v+"/ucd/UnicodeData.txt")
 		ucd.Parse(r, func(p *ucd.Parser) {
 			assigned = append(assigned, p.Rune(0))
 		})
diff --git a/unicode/runenames/runenames.go b/unicode/runenames/runenames.go
index 8966552..0f01ec4 100644
--- a/unicode/runenames/runenames.go
+++ b/unicode/runenames/runenames.go
@@ -7,7 +7,7 @@
 // Package runenames provides rune names from the Unicode Character Database.
 // For example, the name for '\u0100' is "LATIN CAPITAL LETTER A WITH MACRON".
 //
-// See http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
+// See https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
 package runenames
 
 import (
diff --git a/width/width.go b/width/width.go
index f1639ca..29c7509 100644
--- a/width/width.go
+++ b/width/width.go
@@ -12,7 +12,7 @@
 // are kept together in words or runs that are rotated sideways in vertical text
 // layout.
 //
-// For more information, see http://unicode.org/reports/tr11/.
+// For more information, see https://unicode.org/reports/tr11/.
 package width // import "golang.org/x/text/width"
 
 import (
@@ -27,7 +27,7 @@
 //    (approximation, fixed pitch only).
 // 3) Implement display length.
 
-// Kind indicates the type of width property as defined in http://unicode.org/reports/tr11/.
+// Kind indicates the type of width property as defined in https://unicode.org/reports/tr11/.
 type Kind int
 
 const (
@@ -106,7 +106,7 @@
 }
 
 // Kind returns the Kind of a rune as defined in Unicode TR #11.
-// See http://unicode.org/reports/tr11/ for more details.
+// See https://unicode.org/reports/tr11/ for more details.
 func (p Properties) Kind() Kind {
 	return p.elem.kind()
 }