diff --git a/writeframeinputtext.go b/writeframeinputtext.go
new file mode 100644
index 0000000..417a89c
--- /dev/null
+++ b/writeframeinputtext.go
@@ -0,0 +1,21 @@
+package frameproto
+
+import (
+ "io"
+)
+
+// WriteFrameInputText will write the HTML element for the Frame-Protocol's (i.e., Farcaster Frame's) "fc:frame:input:text" name-value pair.
+//
+// For example, this call:
+//
+// var label string = "enter your username"
+//
+// WriteFrameInputText(writer, label)
+//
+// Would write this HTML element:
+//
+//
+func WriteFrameInputText(writer io.Writer, label string) {
+ const property string = MetaPropertyFrameInputText
+ writeMetaPropertyContent(writer, property, label)
+}
diff --git a/writeframeinputtext_test.go b/writeframeinputtext_test.go
new file mode 100644
index 0000000..2e29531
--- /dev/null
+++ b/writeframeinputtext_test.go
@@ -0,0 +1,68 @@
+package frameproto
+
+import (
+ "testing"
+
+ "strings"
+)
+
+func TestWriteFrameInputText(t *testing.T) {
+
+ tests := []struct{
+ URL string
+ Expected string
+ }{
+ {
+ URL: "",
+ Expected: ``+"\n",
+ },
+
+
+
+ {
+ URL: "something",
+ Expected: ``+"\n",
+ },
+
+
+
+ {
+ URL: "Hello world! 🙂",
+ Expected: ``+"\n",
+ },
+
+
+
+ {
+ URL: "enter your username",
+ Expected: ``+"\n",
+ },
+
+
+
+ {
+ URL: "I like to eat, eat, eat, apples and bananas",
+ Expected: ``+"\n",
+ },
+ }
+
+ for testNumber, test := range tests {
+
+ var buffer strings.Builder
+
+ WriteFrameInputText(&buffer, test.URL)
+
+ expected := test.Expected
+ actual := buffer.String()
+
+ if expected != actual {
+ t.Errorf("For test #%d, the actual written meta-tag is not what was expected." ,testNumber)
+ t.Logf("EXPECTED: %s", expected)
+ t.Logf("ACTUAL: %s", actual)
+ t.Logf("EXPECTED: %q", expected)
+ t.Logf("ACTUAL: %q", actual)
+ t.Logf("URL: %q", test.URL)
+ continue
+ }
+ }
+}