As a matter of fact, welding to wrapping elements in Grid structure does not give very good results.
In your example, you order "sm" devices and above to come side by side, but this is not possible for the width values you have defined, because they do not fit.
.textdiv {
font-family: Open sans;
font-size: 18px;
background-color: #EFEFEF;
width: 384px;
height: 380px;
padding-top: 2.5%;
padding-bottom: 0px;
text-align: center;
margin-top:5%;
border: 1px solid black;
}
.h5title {
font-weight:bold;
margin-top: 5%;
margin-bottom: 5%;
font-weight:bold;
}
.buttondiv {
width: 384px;
height:70px;
background-color: #d2d2d2;
letter-spacing: 0px;
color: #222222;
text-transform: uppercase;
opacity: 1;
text-align: center;
padding-top: 10px;
padding-bottom: 10px;
}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
<div class="container">
<div class="row">
<div class="col-sm-4">
<div class="textdiv">
<h5 class="h5title">Lorem ipsum dolor sit</h5>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
<div class="buttondiv">
<a href="http://#">Read more</a>
</div>
</div>
<div class="col-sm-4">
<div class="textdiv">
<h5 class="h5title">Lorem ipsum dolor sit</h5>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
<div class="buttondiv">
<a href="http://#">Read more</a>
</div>
</div>
<div class="col-sm-4">
<div class="textdiv">
<h5 class="h5title">Lorem ipsum dolor sit</h5>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
<div class="buttondiv">
<a href="http://#">Read more</a>
</div>
</div>
</div>
</div>
So let's arrange the wrapper elements to cover the container it is in,
.textdiv {
font-family: Open sans;
font-size: 18px;
background-color: #EFEFEF;
padding-top: 2.5%;
padding-bottom: 0px;
text-align: center;
margin-top:5%;
border: 1px solid black;
}
.h5title {
font-weight:bold;
margin-top: 5%;
margin-bottom: 5%;
font-weight:bold;
}
.buttondiv {
background-color: #d2d2d2;
letter-spacing: 0px;
color: #222222;
text-transform: uppercase;
opacity: 1;
text-align: center;
padding-top: 10px;
padding-bottom: 10px;
}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
<div class="container">
<div class="row">
<div class="col-sm-4">
<div class="textdiv">
<h5 class="h5title">Lorem ipsum dolor sit</h5>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
<div class="buttondiv">
<a href="http://#">Read more</a>
</div>
</div>
<div class="col-sm-4">
<div class="textdiv">
<h5 class="h5title">Lorem ipsum dolor sit</h5>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
<div class="buttondiv">
<a href="http://#">Read more</a>
</div>
</div>
<div class="col-sm-4">
<div class="textdiv">
<h5 class="h5title">Lorem ipsum dolor sit</h5>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
<div class="buttondiv">
<a href="http://#">Read more</a>
</div>
</div>
</div>
</div>
As you can see everything looks fine.
Fullscreen screenshot of this test code snippet.