diff --git a/README.md b/README.md
index 9db9ac4..5b5071d 100644
--- a/README.md
+++ b/README.md
@@ -49,7 +49,7 @@
 
 `gvt fetch` downloads the dependency into the `vendor` folder.
 
-Files and folders starting with `.` or `_` are ignored. Only [files relevant to the Go compiler](https://golang.org/cmd/go/#hdr-File_types) are fetched.
+Files and folders starting with `.` or `_` are ignored. Only [files relevant to the Go compiler](https://golang.org/cmd/go/#hdr-File_types) are fetched. LICENSE files are always included, too.
 
 Test files and `testdata` folders can be included with `-t`.
 
diff --git a/fetch.go b/fetch.go
index cf8bb2c..13d90fb 100644
--- a/fetch.go
+++ b/fetch.go
@@ -130,6 +130,10 @@
 		return err
 	}
 
+	if err := fileutils.CopyLicense(dst, wc.Dir()); err != nil {
+		return err
+	}
+
 	if err := vendor.WriteManifest(manifestFile(), m); err != nil {
 		return err
 	}
diff --git a/fileutils/fileutils.go b/fileutils/fileutils.go
index af05ae9..26f5ad9 100644
--- a/fileutils/fileutils.go
+++ b/fileutils/fileutils.go
@@ -4,6 +4,7 @@
 import (
 	"fmt"
 	"io"
+	"io/ioutil"
 	"os"
 	"path/filepath"
 	"runtime"
@@ -21,6 +22,10 @@
 	".syso",
 }
 
+var licenseFiles = []string{
+	"LICENSE", "LICENCE", "UNLICENSE", "COPYING", "COPYRIGHT",
+}
+
 // Copypath copies the contents of src to dst, excluding any file that is not
 // relevant to the Go compiler.
 func Copypath(dst string, src string, tests bool) error {
@@ -153,6 +158,27 @@
 	return os.RemoveAll(path)
 }
 
+// CopyLicense copies the license file from folder src to folder dst.
+func CopyLicense(dst, src string) error {
+	files, err := ioutil.ReadDir(src)
+	if err != nil {
+		return err
+	}
+	for _, f := range files {
+		if f.IsDir() {
+			continue
+		}
+		name := filepath.Base(f.Name())
+		for _, candidate := range licenseFiles {
+			if strings.ToLower(candidate) == strings.TrimSuffix(
+				strings.TrimSuffix(strings.ToLower(name), ".md"), ".txt") {
+				return Copyfile(filepath.Join(dst, name), f.Name())
+			}
+		}
+	}
+	return nil
+}
+
 func mkdir(path string) error {
 	return os.MkdirAll(path, 0755)
 }
diff --git a/restore.go b/restore.go
index d2a3309..27eb024 100644
--- a/restore.go
+++ b/restore.go
@@ -124,6 +124,10 @@
 		return err
 	}
 
+	if err := fileutils.CopyLicense(dst, wc.Dir()); err != nil {
+		return err
+	}
+
 	if err := wc.Destroy(); err != nil {
 		return err
 	}
diff --git a/update.go b/update.go
index 1fe48a5..17f0358 100644
--- a/update.go
+++ b/update.go
@@ -111,6 +111,10 @@
 				return err
 			}
 
+			if err := fileutils.CopyLicense(dst, wc.Dir()); err != nil {
+				return err
+			}
+
 			if err := m.AddDependency(dep); err != nil {
 				return err
 			}
