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()
 }
