Skip to content

Instantly share code, notes, and snippets.

@liabru
Created April 24, 2014 17:46
Show Gist options
  • Save liabru/11263260 to your computer and use it in GitHub Desktop.
Save liabru/11263260 to your computer and use it in GitHub Desktop.
Save a text file locally with a filename, by triggering a download in JavaScript
/*
* Save a text file locally with a filename by triggering a download
*/
var text = "hello world",
blob = new Blob([text], { type: 'text/plain' }),
anchor = document.createElement('a');
anchor.download = "hello.txt";
anchor.href = (window.webkitURL || window.URL).createObjectURL(blob);
anchor.dataset.downloadurl = ['text/plain', anchor.download, anchor.href].join(':');
anchor.click();
@cirocorvino
Copy link

thanks is a great solution

@technosmarter
Copy link

In the network tab of the dev tool, this URL fails: //pagead2.googlesyndication.com/pagead/adsbygoogle.js It triggers a .txt file download. –
Anyone, please help me ....My Link

@jbreckmckye
Copy link

Don't forget to revoke the object URL to free the memory - they don't get garbage collected

@CesMak
Copy link

CesMak commented Apr 20, 2019

does not work for me....

but this worked:


function download(filename, text) {
  var element = document.createElement('a');
  element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
  element.setAttribute('download', filename);

  element.style.display = 'none';
  document.body.appendChild(element);

  element.click();

  document.body.removeChild(element);
}

// Start file download.
download("hello.txt","This is the content of my file :)");

@chuannm
Copy link

chuannm commented Nov 15, 2019

Great! It worked with Google Chrome 78.0.3904.97.
Thank you so much!

@wilyJ80
Copy link

wilyJ80 commented Sep 14, 2024

Also, browsers might block subsequent downloads because of security.
A solution is to probably stick with manually downloading through the element appended somewhere.

function appendDownloadableText(filename, string) {
    const data = new Blob([string]);
    const url = URL.createObjectURL(data);
    const a = document.createElement('a');

    a.href = url;
    a.download = filename;
    a.textContent = filename;
    document.body.appendChild(a);
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment