Skip to content

A Textarea Element That Autoresizes

Due to the fact that the HTML <textarea> element does not automatically grow to fit its content, many developer look for plugins and scripts to enable this feature. This bit of JavaScript will cause any applicable <textarea> elements to resize automatically to fit the content typed or pasted into it.

The code has the following features:

  • Uses a hidden clone element (a <div>) that has the same typographical properties as the <textarea>
  • Has no dependencies (e.g. jQuery)
  • Will autosize any <textarea> that has a class of txta
  • Works in all browsers, even old IE

Here’s the HTML:

<textarea placeholder="Type multiple lines of content here." class="txta"></textarea>Code language: HTML, XML (xml)

Here’s the CSS:

.txta {
    width: 100%;
    max-width: 500px;
    min-height: 100px;
    font-family: Arial, sans-serif;
    font-size: 16px;
    overflow: hidden;
    line-height: 1.4;
}Code language: CSS (css)

And the JavaScript (commented):

// Targets all textareas with class "txta" 
let textareas = document.querySelectorAll('.txta'), 
    hiddenDiv = document.createElement('div'), 
    content = null; 

// Adds a class to all textareas 
for (let j of textareas) { 

// Build the hidden div's attributes 

// The line below is needed if you move the style lines to CSS 
// hiddenDiv.classList.add('hiddendiv'); 

// Add the "txta" styles, which are common to both textarea and hiddendiv 
// If you want, you can remove those from CSS and add them via JS 

// Add the styles for the hidden div 
// These can be in the CSS, just remove these three lines and uncomment the CSS = 'none'; = 'pre-wrap'; = 'break-word'; 

// Loop through all the textareas and add the event listener 
for(let i of textareas) { 
    (function(i) { 
      // Note: Use 'keyup' instead of 'input' 
      // if you want older IE support 
      i.addEventListener('input', function() { 

        // Append hiddendiv to parent of textarea, so the size is correct 

        // Remove this if you want the user to be able to resize it in modern browsers = 'none'; 

        // This removes scrollbars = 'hidden'; 

        // Every input/change, grab the content 
        content = i.value; 

        // Add the same content to the hidden div 

        // This is for old IE 
        content = content.replace(/\n/g, '<br>'); 

        // The <br ..> part is for old IE 
        // This also fixes the jumpy way the textarea grows if line-height isn't included 
        hiddenDiv.innerHTML = content + '<br style="line-height: 3px;">'; 
        // Briefly make the hidden div block but invisible 
        // This is in order to read the height = 'hidden'; = 'block'; = hiddenDiv.offsetHeight + 'px'; 
        // Make the hidden div display:none again = 'visible'; = 'none'; 
}Code language: JavaScript (javascript)

The HTML in the demo also includes a commented-out second <textarea> element that you can uncomment to test multiple textareas on the same page.

Note: To the best of our knowledge, the information above and the snippet are accurate and up to date. However, in case you notice something wrong, please report snippet or leave a comment below.
View all Snippets
Louis Lazaris

Inline Feedbacks
View all comments

Or start the conversation in our Facebook group for WordPress professionals. Find answers, share tips, and get help from other WordPress experts. Join now (it’s free)!

Would love your thoughts, please comment.x

Most Searched Articles

Best JavaScript Libraries and Frameworks: Try These 14 in 2024

In this post, we look at the best JavaScript libraries and frameworks to try out this year. Why? Well, with JavaScript being available in every web browser, this makes it the most accessible programming language of ...

20 Best Free WordPress Themes for 2024 (Responsive, Mobile-Ready, Beautiful)

If you're looking for only the best free WordPress themes in the market for this year, then you're in the right place. We have more than enough such themes for you right ...

12 Best WordPress Hosting Providers of 2024 Compared and Tested

Looking for the best WordPress hosting that you can actually afford? We did the testing for you. Here are 10+ best hosts on the market ...

Handpicked Articles

How to Make a WordPress Website: Ultimate Guide for All Users – Beginners, Intermediate, Advanced

Many people wonder how to make a WordPress website. They’ve heard about WordPress, its incredible popularity, excellent features and designs, and now they want to join the pack and build a WordPress website of their own. So, where does one get ...

How to Start an Ecommerce Business: Ultimate Guide for 2024

Is this going to be the year you learn how to start an eCommerce business from scratch? You’re certainly in the right place! This guide will give you a roadmap to getting from 0 to a fully functional eCommerce business. ...