Javascript – How to create a file in memory for user to download, but not through server


Is there any way I can create a text file on the client side and prompt the user to download it, without any interaction with the server?
I know I can't write directly to their machine (security and all), but can I create and prompt them to save it?

Best Solution

Simple solution for HTML5 ready browsers...

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

form * {
  display: block;
  margin: 10px;
<form onsubmit="download(this['name'].value, this['text'].value)">
  <input type="text" name="name" value="test.txt">
  <textarea name="text"></textarea>
  <input type="submit" value="Download">


download('test.txt', 'Hello world!');